本系列不按期更新,用于记录日常开发过程当中出现的一些小问题数组



能够理解slice是对array的一个视图,底层仍是array因此会被修改闭包
if _, ok := maps["xxx"]; !ok {
....
}函数
注意使用rune数组来保证汉字的字节问题
func main() {
str := "test"
strArr := []rune(str)
strArr[0] = '我'
fmt.Println(string(strArr))
}对象

在外部调用的Add是操做外部的sync.WaitGroup,可是test方法内部的Done操做的是内部的sync.WaitGroup,二者的sync.WaitGroup是不一样的。在这里须要改成引用传递,而不要传值拷贝。
blog
close已经关闭的channel
向已经关闭的channel发送消息
在一开始使用channel的时候很容易忽视这个问题,并且这个问题隐藏的很好,因此使用channel必定要注意,由于出现panic会致使程序直接崩溃开发
这个问题也很容易犯,可是由于遇到的人多,因此在这里仍是提一下
string
应该写为

若是你不懂问题在哪,你赶忙敲代码试试看it
type User struct {
name string
}test
func (user *User) print() {
fmt.Println("name: ", user.name)
}变量
func main() {
user := &User{
name: "小明",
}
m := make(map[string]User)
m["xiaoming"] = *user
m["xiaoming"].print()
}
这个会出现异常,由于map在获取的时候是不肯定的,须要用一个变量去接一下