golang中map赋值

众所周知,golang中map是一个指针,既然是一个指针,那么参数传递、赋值应该都是指针传递,而下面的例子也印证了我的想法

go 复制代码
package main

import "fmt"

func test_map2(m map[string]string) {
	fmt.Printf("inner: %v, %p, %p\n", m, m, &m)
	m = make(map[string]string, 0)
	m["a"] = "11"
	fmt.Printf("inner: %v, %p, %p\n", m, m, &m)
}

func main() {
	// var m map[string]string //未初始化
	m := make(map[string]string)

	fmt.Printf("outer: %v, %p, %p\n", m, m, &m)
	test_map2(m)
	fmt.Printf("outer: %v, %p, %p\n", m, m, &m)
	n := m
	fmt.Printf("outer: %v, %p, %p\n", n, n, &n)
}

输出

go 复制代码
outer: map[], 0xc0000160f0, 0xc000042020
inner: map[], 0xc0000160f0, 0xc000042030
inner: map[a:11], 0xc000016180, 0xc000042030
outer: map[], 0xc0000160f0, 0xc000042020
outer: map[], 0xc0000160f0, 0xc000042038
相关推荐
19岁开始学习1 小时前
Go学习-入门
开发语言·学习·golang
一小路一1 小时前
Go Web 开发基础:从入门到实战
服务器·前端·后端·面试·golang
LeonNo113 小时前
Gentleman:优雅的Go语言HTTP客户端工具包
开发语言·http·golang
程序无涯海3 小时前
【Go入门篇】第一章:从 Java/Python 开发者的视角入门go语言
java·python·golang·教程·编程语言
Golinie5 小时前
【Go | 从0实现简单分布式缓存】-1:LRU缓存淘汰策略与单机并发缓存
分布式·缓存·golang
DavidSoCool11 小时前
go执行java -jar 完成DSA私钥解析
java·golang·jar
老狼伙计1 天前
Golang深度学习
开发语言·golang
云熙涵1 天前
C#语言的物联网
开发语言·后端·golang
Golinie1 天前
【Go | 从0实现简单分布式缓存】-2:HTTP服务端与一致性哈希
分布式·缓存·golang
解决方案工程师1 天前
【golang】channel带缓存和不带缓存的区别,应用场景解读
golang