为了账号安全,请及时绑定邮箱和手机立即绑定

具有混合返回/签名类型的 Go 函数

具有混合返回/签名类型的 Go 函数

Go
心有法竹 2023-04-04 17:24:46
我试图弄清楚指针在 Go 中是如何工作的,我想我开始明白了,但这让我很困惑,我真的不知道要搜索什么。假设我有以下功能:func createNode(nodeInfo string) *TreeNode {    return &TreeNode{info: nodeInfo}}我知道该函数正在返回创建的结构实例的内存地址,但是函数签名怎么说*TreeNode?根据我的理解, the*用于取消引用指针以获取值本身,那么这里发生了什么?也在这里: func zero(xPtr *int) {  *xPtr = 0}func main() {  x := 5  zero(&x)}相反的情况发生在函数接受运算符的参数*但函数本身被运算符调用的情况下&。
查看完整描述

1 回答

?
交互式爱情

TA贡献1712条经验 获得超3个赞

*两种用途,一种用于变量,一种用于类型:

  • 对于类型,它表示类型是指针,而不是直接的值。

  • 如您所知,对于变量,它取消引用指针。(也可以将这种用法区分为两个“子用途”,如*在赋值的左侧,在*ptr = val设置指针指向的值时,*通常“检索”指针指向的值。)

&另一方面,只能用于变量并获取内存中对象的地址。

在您的示例中,根据types的使用,返回类型 *TreeNode和参数类型 表示您正在返回/期望一个指针。相反,取消引用变量*int*xPtr = 0 xPtr

要知道在您的情况下哪种用法是正确的,您必须自己弄清楚您是在处理类型还是变量。


查看完整回答
反对 回复 2023-04-04
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信