Go 语言基础与并发编程

75 阅读1分钟

一、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 语言对并发编程有着天然的支持,主要通过goroutinechannel实现。

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)
}

通过goroutinechannel,Go 可以高效地处理大量并发任务,这在网络服务等场景中非常有用。