好久没写GO了,今天在function中传递map指针的时候,犹豫了一下,是否真的有必要传递map指针?按道理来说,这个问题是毫无疑问的回答是,因为传递指针的好处就是速度快,占用内存少。但是,我隐隐约约记得,GO中的map和slice是天然的引用类型,什么意思?就是无论你怎么赋值,在GO的内部编译执行的时候,都是指针传递,并不会发生实质的内容拷贝。。。

晚上回来的路上就一直在想这个问题。。。觉得模模糊糊,不太确定。回到家立即写个demo来证明一下,直接贴代码:

也可以到这里在线运行:http://play.golang.org/p/0VHB4e9BJY

输出结果是:

map[xxx:123 xxx222:xxx xxx333:xxx]

结果说明了“GO中的map和slice是天然的引用类型,什么意思?就是无论你怎么赋值,在GO的内部编译执行的时候,都是指针传递,并不会发生实质的内容拷贝”同时使用这些引用类型的变量也需要小心副作用,因为一修改,就会影响所有使用这个参数的代码。。。