Go 语言基础 | 青训营笔记

37 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第1天 Go语言(Golang)是由Google开发的一种开源编程语言。它具有高效的编译和运行速度,简洁的语法和并发编程的特性。

下面是一个简单的Hello World程序:

package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

第一行包声明语句表示这是一个可独立执行的程序,而非一个库。

第二行引入了标准库中的fmt包,fmt包实现了输入输出相关的功能,如Println()函数。

第四行是程序的入口,main()函数表示程序的入口。

第五行使用fmt.Println()函数输出Hello, World!字符串。

如果你已经安装了Go环境,可以通过命令行运行这个程序:

$ go run main.go

go语法

Go语言的语法与C语言和Java语言类似,有以下几个重要的特点:

  • Go语言没有类,而是通过结构体(struct)和接口(interface)来实现面向对象编程。
  • Go语言中没有继承,而是通过组合来实现代码复用。
  • Go语言有一个关键字叫做“并发”(concurrency),可以轻松地编写并发代码。

下面是一些基本语法示例:

  • 变量声明:
var x int
x = 1
y := 2
  • 数组和切片(slice)
a := [3]int{1, 2, 3}
s := []int{1, 2, 3}
  • 循环
for i := 0; i < 10; i++ {
    // do something
}

for _, v := range a {
    // do something
}

for {
    // infinite loop
}
  • 分支
if x > 0 {
    // do something
} else if x < 0 {
    // do something
} else {
    // do something
}
  • 函数
func add(x int, y int) int {
    return x + y
}

func add(x, y int) int {
    return x + y
}

还有很多细节,包括结构体、接口、并发编程等等,如果需要深入学习可以继续查阅相关的资料。

并发编程

Go语言中有两种主要的并发编程方式,分别是goroutine和channel。

  • goroutine是Go语言的轻量级线程,可以轻松地在一个进程中启动成千上万个并发执行的函数。使用go关键字来启动一个新的goroutine。
package main

import "fmt"

func printHello() {
    fmt.Println("Hello")
}

func main() {
    go printHello()
    fmt.Println("World")
}
  • channel是Go语言中并发编程的重要部分,它用于在不同的goroutine之间传递数据。可以使用make关键字创建一个channel,使用<-符号来接收或发送数据。
package main

import "fmt"

func sum(a []int, c chan int) {
    total := 0
    for _, v := range a {
        total += v
    }
    c <- total // send total to c
}

func main() {
    a := []int{7, 2, 8, -9, 4, 0}

    c := make(chan int)
    go sum(a[:len(a)/2], c)
    go sum(a[len(a)/2:], c)
    x, y := <-c, <-c // receive from c

    fmt.Println(x, y, x+y)
}

go的并发编程是非常强大的,同时也是非常简单易用的。通过使用goroutine和channel,可以轻松地编写高效、并发、稳健的代码。

当然,并发编程也是有风险的,如果不当使用可能会导致程序陷入死锁或者数据竞争等问题,需要多加注意。