栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我无法在Go中获得类型转换的地址?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我无法在Go中获得类型转换的地址?

Go编程语言规范

表达方式

表达式通过将运算符和函数应用于操作数来指定值的计算。

转换次数

转换是形式为T(x)的表达式,其中T是类型,x是可以转换为类型T的表达式。

地址运算符

对于类型T的操作数x,地址操作&x生成指向 T的类型
T的指针。操作数必须是可寻址的,即变量,指针间接寻址或切片索引操作;或可寻址结构操作数的字段选择器;或可寻址数组的数组索引操作。除可寻址性要求外,x还可为(可能带有括号的)复合文字。如果对x的求值会引起运行时恐慌,那么对&x的求值也是如此。

表达式是临时的临时值。表达式值没有地址。它可以存储在寄存器中。转换是一种表达。例如,

package mainimport (    "fmt")func main() {    type str string    s := "hello, world"    fmt.Println(&s, s)    // error: cannot take the address of str(s)    sp := &str(s)    fmt.Println(sp, *sp)}

输出:

main.go:13:8: cannot take the address of str(s)

要寻址,值必须像变量一样是持久的。例如,

package mainimport (    "fmt")func main() {    type str string    s := "hello, world"    fmt.Println(&s, s)    ss := str(s)    sp := &ss    fmt.Println(sp, *sp)}

输出:

0x1040c128 hello, world0x1040c140 hello, world


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/448072.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号