go基本知识与语法入门
Go 语言(又称 Golang)是一种由 Google 开发的开源编程语言,设计目标是简洁、高效、并发友好,适合用于构建高性能的系统和网络应用程序。Go 语言的语法相对简单,非常适合大规模软件开发。
1. 基本结构
Go 程序的基本结构非常简单,一个 Go 程序的最小单元就是一个包含 main
函数的包(package):
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
package main
:定义包名,这里是main
,表示该文件是可执行程序的入口点。import "fmt"
:引入标准库中的fmt
包,用于格式化 I/O 操作。func main()
:定义程序的入口函数,Go 程序从main
函数开始执行。
2. 变量声明和类型
Go 是静态类型语言,变量在使用之前必须声明。可以使用 var
或 :=
来声明变量。
使用 var
声明:
var x int = 10
var name string = "Alice"
使用短声明 :=
声明(常用于局部变量):
x := 10
name := "Alice"
Go 具有自动类型推导功能,因此你可以省略变量类型,Go 会根据右侧的值推导出类型。
常见的类型:
- 基本数据类型:
int
,float32
,float64
,string
,bool
。 - 复合类型:
array
、slice
、map
、struct
、interface
。 - 指针类型:Go 具有指针,但没有指针算术。
3. 控制结构
Go 提供了常见的控制结构,如条件语句、循环和跳转语句。
条件语句 if
:
if x > 10 {
fmt.Println("x is greater than 10")
} else {
fmt.Println("x is less than or equal to 10")
}
循环 for
:
Go 只有一种循环结构:for
。它有三种形式:
- 普通循环:
for i := 0; i < 5; i++ {
fmt.Println(i)
}
- 条件循环:
i := 0
for i < 5 {
fmt.Println(i)
i++
}
- 无限循环:
for {
// 永久执行的代码
}
switch
语句:
Go 的 switch
是一种类似于 C 的 switch
语句,但它可以自动“fall-through”(直接跳到下一个 case),也可以加上 break
来防止这个行为。
switch x {
case 1:
fmt.Println("x is 1")
case 2:
fmt.Println("x is 2")
default:
fmt.Println("x is neither 1 nor 2")
}
4. 函数
函数在 Go 中也是第一类对象,可以被传递和赋值。函数的声明形式如下:
func add(a int, b int) int {
return a + b
}
func
是关键字,用于定义函数。add
是函数名,a int, b int
是参数,int
是返回值的类型。
Go 也支持多返回值:
func swap(a, b int) (int, int) {
return b, a
}
5. 数组和切片
Go 具有静态数组和动态切片。数组的大小是固定的,而切片是一个灵活的数据结构,可以动态增长。
数组:
var arr [3]int
arr[0] = 1
arr[1] = 2
arr[2] = 3
切片:
slice := []int{1, 2, 3} // 创建一个切片
slice = append(slice, 4) // 向切片添加元素
6. 结构体(Struct)
Go 使用结构体来表示复合数据类型,它与类相似,但 Go 不支持面向对象的继承。
type Person struct {
Name string
Age int
}
p := Person{Name: "Alice", Age: 30}
fmt.Println(p.Name) // 访问结构体字段
7. 接口(Interface)
Go 使用接口来实现多态。接口类型指定了某些方法的集合,但并不需要明确声明接口的实现。
type Speaker interface {
Speak() string
}
type Person struct {
Name string
}
func (p Person) Speak() string {
return "Hello, " + p.Name
}
func greet(speaker Speaker) {
fmt.Println(speaker.Speak())
}
p := Person{Name: "Alice"}
greet(p) // 输出:Hello, Alice
8. 并发
Go 对并发编程有内置的支持,通过 goroutine
和 channel
进行协作式多任务处理。
Goroutines:
Goroutines 是 Go 的轻量级线程,启动一个 goroutine 只需要使用 go
关键字。
go func() {
fmt.Println("This runs concurrently")
}()
Channels:
Channel 是用来在 goroutines 之间传递数据的管道。
ch := make(chan int)
go func() {
ch <- 42
}()
fmt.Println(<-ch) // 从 channel 中接收数据
总结
Go 语言的设计目标是简洁、并发和高效,它提供了很多优秀的特性,如垃圾回收、内存安全、强类型系统、并发支持等。它适用于从系统编程到网络服务等各种应用领域。通过简洁的语法和工具,Go 能帮助开发者更容易地编写可靠的高性能应用。
原文地址:https://blog.csdn.net/weixin_45056021/article/details/144645507
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!