📅  最后修改于: 2023-12-03 15:15:23.476000             🧑  作者: Mango
Go语言是由Google开发的一门静态编译型的编程语言,它被设计成用于高性能且可靠性较高的系统编程,同时也适合用于网络应用、分布式系统等场景。
本备忘单将为你提供一些常用的Golang编程语言语法和代码示例,以便快速查找和使用。
Go语言通过关键字var定义变量。同时,我们也可以使用:=来做简写的变量定义。例如:
var name string = "zhangsan"
age := 24
在Go语言中,有三种基本集合类型: 数组、切片和map。其中,数组和切片都是有序的,而map则是无序的。
数组的长度是固定的,定义时必须指定长度。定义一个长度为5的整型数组的代码如下:
var arr [5]int
切片是一个可变长度的数组。定义一个整型切片的代码如下:
var arr []int
切片也可以通过make函数创建:
slice := make([]int, 10)
Map是一种无序的键值对集合。定义一个字符串到int类型的map的代码如下:
myMap := make(map[string]int)
控制流在Go语言中与其他编程语言比较类似,最常见的就是if语句和for循环。还有一些其他的语句,例如switch和select,这里我们不再赘述。
if语句的使用与其他编程语言中类似。例如:
a := 1
if a > 0 {
fmt.Printf("a is positive")
} else if a == 0 {
fmt.Printf("a is zero")
} else {
fmt.Printf("a is negative")
}
Go语言中只有一种循环结构:for循环。不过,在for循环中可以使用range关键字来遍历切片、数组等集合类型。例如:
arr := [3]int{1,2,3}
for i, v := range arr {
fmt.Printf("index: %d, value: %d\n", i, v)
}
slice := []string{"hello", "world"}
for i, v := range slice {
fmt.Printf("index: %d, value: %s\n", i, v)
}
Go语言中函数的定义格式为:
func 函数名(参数列表) 返回值列表 {
// 函数体
}
例如定义一个将字符串反转的函数:
func reverse(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < len(runes)/2; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
Go语言中的接口设计非常简单灵活,接口中只包含方法的声明。如果一个类型实现了接口声明的所有方法,那么它就是该接口类型的实例。
定义一个简单的接口类型:
type Writer interface {
Write(p []byte) (n int, err error)
}
如果一个类型实现了Writer中声明的Write方法,那么它就是Writer类型的实例。例如:
type MyWriter struct {}
// 实现Writer接口中的Write方法
func (w MyWriter) Write(p []byte) (int, error) {
// TODO: 实现Write方法
}
Go语言中天生支持并发编程,通过goroutine和channel两种机制支持并发编程。
goroutine类似于线程,但是它的运行成本非常小,甚至在同一个可执行程序内的goroutine之间的切换成本也可以忽略不计。定义一个goroutine的方式非常简单,只需要在函数或方法前面加上关键字go即可。
func main() {
go func() {
fmt.Printf("Hello from another goroutine")
}()
fmt.Printf("Hello from main")
}
通道是goroutine之间通讯的一种方式。通道可以用来传递数据,也可以用来同步goroutine的执行。定义一个通道的方式如下:
myChan := make(chan int)
向通道中发送数据的方式:
myChan <- 10
从通道中读取数据的方式:
x := <-myChan
使用通道同步goroutine的执行的方式,例如:
import "sync"
var wg sync.WaitGroup
wg.Add(1)
go func() {
// TODO: do something
wg.Done()
}()
wg.Wait()
这里只是简单介绍了Golang编程语言的一些语法和实践方法。如果您希望更深入地了解Go语言的话,建议参考官方文档或相关书籍。