1、函数只能与nil比较,不能比较两个函数是否相等
// 编译错误
func main() {
var f1 = func() {}
var f2 = func() {}
if f1 == f2 {
fmt.Println("f1 equal f2")
}
}
2、map[key]struct中struct是不可寻址的,所以不能直接赋值
// 编译错误
type Student struct {
Name string
}
func main() {
m := make(map[int]Student)
m[0].Name = "张三"
fmt.Println(m[0].Name)
}
3、 := 操作符不能用于结构体字段赋值
// 编译错误
type Student struct {
Name string
}
func main() {
var s Student
s.Name, tmp := "张三", "李四"
}
4、有方向的chan不可以关闭
// 编译错误
func Close(ch <- chan int) {
close(ch)
}
5、字符串是只读的
// 编译错误
func main() {
str := "abcd"
str[0] = 'x'
fmt.Println(str)
}
6、 map是不可比较的
// 编译错误
func main() {
m1 := map[int]string{1:"a"}
m2 := map[int]string{1:"a"}
if m1 == m2 {
fmt.Println("map1 equal map2")
}
}
7、slice切片是不可比较的
// 编译错误
func main() {
s1 := []int{1,2}
s2 := []int{1,2}
if s1 == s2 {
fmt.Println("slice1 equal slice2")
}
}
8、map未分配内存不能赋值
// 编译错误
func main() {
var m1 map[int]string
m1[0] = "abc"
}
9、map中的value是不可寻址的
// 编译错误
type Student struct {
Name string
}
func main() {
m := map[string]Student{"zhangsan": Student{"张三"}}
m["zhangsan"].Name = "李四"
fmt.Println(m["zhangsan"].Name)
}
10、可变函数是指针传递
func Hello(nums ...int) {
nums[0] = 100
}
func main() {
nums := []int{1, 2, 3}
Hello(nums...)
fmt.Println(nums[0]) // 输出100
}
飞机~~~