Go编程语言入门知识
通道特性和多重返回值
Go语言通过通道特性和多重返回值的机制来实现一些功能,通道特性使得并发编程变得简洁高效,多重返回值则可以方便地返回多个结果,而无需借助结构体等复杂的数据结构。
map的基本操作
以下是Go语言中map的基本操作示例:
Go
package main
import "fmt"
func main() {
//1、初始化
m1 := map[string]int{}
m2 := make(map[string]int, 10)
//2、插入数据
m1["AA"] = 10
m1["BB"] = 20
m1["CC"] = 30
m2["AA"] = 10
m2["BB"] = 20
m2["CC"] = 30
//3、访问数据
fmt.Println("m1 AA=", m1["AA"])
fmt.Println("m2 BB=", m2["BB"])
fmt.Println()
//4、删除
delete(m1, "AA")
delete(m2, "BB")
fmt.Println("m1 AA=", m1["AA"])
fmt.Println("m2 BB=", m2["BB"])
fmt.Println()
//5、遍历
for key, value := range m1 {
fmt.Println("m1 Key=", key, ";Value=", value)
}
fmt.Println()
for key, value := range m2 {
fmt.Println("m2 Key=", key, ";Value=", value)
}
}
上述代码展示了map的初始化、插入数据、访问数据、删除元素以及遍历操作。
常见出错问题
测试报错
新建项目,编写测试函数后,在终端输入 go test 可能会得到报错:go.mod file not found in current directory or any parent directory; see 'go help modules'。
nil 关键字使用错误
不能使用"nil"来定义一个没有类型的变量。"nil"关键字可用于表示"0 值",例如在接口、函数、指针等对象中,但用于定义没有进行类型声明的变量,会导致编译错误,因为编译器无法确定变量类型。
Channel 常见错误
Channel 常见错误围绕以下场景:未初始化的 nil Channel;关闭时机不当(重复关闭、过早关闭);阻塞与死锁(无缓冲 Channel 未配对、Range 循环未关闭);竞态条件(多个 Goroutine 操作 Channel)。
错误处理问题
在错误处理方面,如果不恰当处理错误,可能会导致程序运行异常。例如对于未知错误,如果不进行合适判断处理,直接 panic 可能会使程序崩溃。