zzz*_*zzz 38
地址运算符返回指向具有"home"的东西的指针,例如变量.代码中表达式的值是"无家可归者".如果你真的需要一个*字符串,你必须分两步完成:
tmp := a(); b := &tmp
Run Code Online (Sandbox Code Playgroud)
请注意,虽然*string的用例完全有效,但很多时候使用它们都是错误的.在Go中string是一个值类型,但是传递一个便宜的类型(指针和int).String的值是不可变的,更改*string"home"指向的更改,而不是字符串值,因此在大多数情况下*string根本不需要.
小智 5
最后,您建议Go应该允许您获取任何表达式的地址,例如:
i,j := 1,2
var p *int = &(i+j)
println(*p)
Run Code Online (Sandbox Code Playgroud)
当前的Go编译器打印错误: cannot take the address of i + j
在我看来,允许程序员获取任何表达式的地址:
将编译器和规范复杂化似乎适得其反.