《零基础Go语言算法实战》【题目 2-11】属性的权限
《零基础Go语言算法实战》
【题目 2-11】属性的权限
下面代码的输出是什么?
type Programmer struct {
name string `json:"name"`
}
func main() {
js := `{
"name":"18"
}`
var p Programmer
err := json.Unmarshal([]byte(js), &p)
if err != nil {
fmt.Println("err: ", err)
return
}
fmt.Println("programmer: ", p)
}
【解答】
programmer: {}
按照 Go 语言的语法,首个单词的首字母以小写开头的方法、属性或结构体是私有的,
同样,在 json 解码或转码时也无法上线私有属性的转换。题目中是无法正常得到 Programmer
的 name 值的。而且,私有属性 name 也不应该加 json 的标签。