go 类型断言_Go中哪些值可以被取地址,哪些值不可以被取地址?

本文详细介绍了Go语言中哪些值是可寻址的,如变量、结构体字段、数组元素和切片元素,以及不可寻址的值,包括字符串字节、映射元素、接口值等。同时,解释了字面值和某些表达式的寻址特性。通过实例展示了Go语言中取地址的操作,并推荐了《Go语言101》官网以获取更多编程技巧。
摘要由CSDN通过智能技术生成

Go中以下的值是可寻址的,因此可以被取地址:

  • 变量
  • 可寻址的结构体的字段
  • 可寻址的数组的元素
  • 任意切片的元素(无论是可寻址切片或不可寻址切片)
  • 指针解引用操作

示例:

613ec1bd10648107aea8b1b142c0c600.png

Go中以下的值是不可寻址的:

  • 字符串的字节元素
  • 映射元素
  • 接口值的动态值(类型断言的结果)
  • 常量值
  • 字面值
  • 声明的包级别函数
  • 方法(用做函数值)
  • 表达式中间结果值
  • 数据通道接收操作
  • 子字符串操作
  • 子切片操作
  • 加法、减法、乘法、以及除法等等。
  • 函数调用
  • 显式值转换
  • 各种操作,不包含指针解引用(dereference)操作,但是包含数据通道接收操作、子字符串操作、子切片操作,以及加法/减法/乘法/除法等等。

虽然字面值是不可寻址的,但是组合字面值T{}可以被取地址(虽然它是不可寻址的),这只是为了编程方便而设计的一个语法糖,并非为以上规则的特例。比如下面这段代码编译时没问题的。

9e193ec57c30f05698fb8f0d1f8e7846.png

关于更多Go语言编程中的事实、细节和技巧,请访问《Go语言101》官方网站:https://gfw.go101.org 。

作者:老貘

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值