Golang易错知识点

1. for … range

package main

import "fmt"

func main() {
	m := []int{1, 2, 3}
	n := make(map[int]*int)
	for k, v := range m {
		fmt.Println(k, v)
		n[k] = &v
	}
	fmt.Printf("%+v", n)
}

Output:

0, 1, 0xc000014168, 0xc000014180
1, 2, 0xc000014168, 0xc000014180
2, 3, 0xc000014168, 0xc000014180
map[0:0xc000014180 1:0xc000014180 2:0xc000014180]

可以看到Range里k,v的变量地址未发生改变,多次循环使用了同一块内存地址接收。

2、Slice陷阱

3、随机到相同的值

-- EOF --
最后更新于: 2022-04-10 01:32
发表于: 2021-02-04 13:00
标签: Golang