这是我参与「第五届青训营 」笔记创作活动的第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,可以轻松地编写高效、并发、稳健的代码。
当然,并发编程也是有风险的,如果不当使用可能会导致程序陷入死锁或者数据竞争等问题,需要多加注意。