一、Go 语言基础
Go 语言有着简洁的语法。变量声明有多种方式,例如var num int = 10是显式声明并赋值,还可以使用短变量声明num := 10(但此方式只能在函数内使用)。
数据类型方面,除了常见的整型、浮点型、字符串等,Go 还有强大的结构体类型。结构体允许将不同类型的数据组合在一起,例如:
go
type Person struct {
Name string
Age int
}
函数在 Go 中定义格式为func functionName(parameters) returnTypes {}。函数可以有多个返回值,这在处理错误时非常方便,例如:
go
func divide(a, b int) (int, error) {
if b == 0 {
return 0, fmt.Errorf("除数不能为0")
}
return a / b, nil
}
二、并发编程
Go 语言对并发编程有着天然的支持,主要通过goroutine和channel实现。
goroutine是轻量级的线程,通过在函数调用前加上go关键字就可以启动一个goroutine。例如:
go
func printNumbers() {
for i := 1; i <= 10; i++ {
fmt.Println(i)
}
}
func main() {
go printNumbers()
// 主函数可以继续执行其他任务
time.Sleep(time.Second * 2)
}
channel用于在goroutine之间传递数据和同步。它有两种操作,发送(<-)和接收。例如:
go
func producer(ch chan int) {
for i := 1; i <= 5; i++ {
ch <- i
}
close(ch)
}
func consumer(ch chan int) {
for num := range ch {
fmt.Println(num)
}
}
func main() {
ch := make(chan int)
go producer(ch)
go consumer(ch)
time.Sleep(time.Second * 2)
}
通过goroutine和channel,Go 可以高效地处理大量并发任务,这在网络服务等场景中非常有用。