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
相关推荐
布朗克1684 小时前
Go 入门到精通-33-unsafe 与 CGO
开发语言·后端·golang·unsafe·cgo
ttwuai5 小时前
AI 生成后台删除按钮后,MySQL 软删除和唯一索引怎么验
数据库·mysql·golang
Wang's Blog9 小时前
Go-Zero 项目开发19:基于 Kafka 的异步消息存储与转发实战
golang·kafka
小莫分享9 小时前
sshw:用交互搜索和 Web 配置高效管理 SSH Server
linux·运维·golang·开源·ssh
名字还没想好☜9 小时前
Go 结构体内存对齐:调整字段顺序,同样的字段省下 40% 内存
开发语言·后端·golang·go·内存对齐
FfHUCisI10 小时前
sync.Mutex 互斥锁
golang
牛奔19 小时前
Go 如何打印调试深层或嵌套的结构体
开发语言·后端·golang
geovindu20 小时前
go: Iterative Algorithms
开发语言·后端·算法·golang·迭代算法
kite012121 小时前
Go语言Map深度解析与最佳实践
开发语言·后端·golang
Wang's Blog1 天前
Go-Zero 项目开发21: 实现离线消息拉取与会话管理
开发语言·后端·golang