Go每日一题(26) 的题目如下

4205 次点击 · 8 赞 ·大约8小时之前 开始浏览   · 来源「Golang修养之路」

以下代码能否编译?

package main

import "fmt"

type Student struct {
	Name string
}

var list map[string]Student

func main() {

	list = make(map[string]Student)

	student := Student{"Aceld"}

	list["student"] = student
	list["student"].Name = "LDB"

	fmt.Println(list["student"])
}
4205 阅读
56 回复
zhangwei_go
zhangwei_go · #51 · 12月之前

map[string]Student 的 value 是一个 Student 结构值,所以当list["student"] = student,是一个值拷贝过程。而list["student"]则是一个值引用。那么值引用的特点是只读。所以对list["student"].Name = "LDB"的修改是不允许的。

BigBigGopher
BigBigGopher · #52 · 12月之前

mk

Qmfuser
Qmfuser · #53 · 12月之前

mark

YuPeng
YuPeng · #54 · 12月之前

mark

BigBigGopher
BigBigGopher · #55 · 8月之前

mark

euibieur894
euibieur894 · #56 · 19天之前

值引用的特点是只读。所以对list["student"].Name = "LDB"的修改是不允许的。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传