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
相关推荐
sunflower#5 小时前
Go学习第五阶段:接口、泛型与包设计,实现可替换的通讯录存储层
学习·oracle·golang
ShuiShenHuoLe10 小时前
golang-jwt v5 入门
开发语言·后端·golang
geovindu13 小时前
go: Task Scheduler
开发语言·后端·golang
FfHUCisI16 小时前
Go 内存分配器概览:从 TCMalloc 到三级缓存架构
缓存·架构·golang
Johnston_man17 小时前
golang 安装 protoc、protoc-gen-go、protoc-gen-go-grpc、protoc-gen-grpc-gateway
后端·golang
ttwuai17 小时前
Go 后台接入单点登录后,JWT、菜单权限和接口 403 怎么验?
开发语言·后端·golang
码士集团小青1 天前
从对标 Java 到对标 Go:Native AOT 的“无痛化“之路,走到哪一站了?
golang
右耳朵猫AI1 天前
Go周刊2026W36 | Go 1.27.1 发布、TinyGo 0.42、HTTP/2 原生迁入 net/http、quic-go 0.62
redis·http·golang
大树912 天前
把 Java 项目从手动 SCP 升级到 Gitee Go 自动部署:一份踩坑实录
java·golang·gitee
lmy_loveF2 天前
go 切换go version 版本
开发语言·后端·golang