亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

具有混合返回/簽名類型的 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設置指針指向的值時,*通?!皺z索”指針指向的值。)

&另一方面,只能用于變量并獲取內存中對象的地址。

在您的示例中,根據types的使用,返回類型?*TreeNode和參數類型?表示您正在返回/期望一個指針。相反,取消引用變量。*int*xPtr = 0?xPtr

要知道在您的情況下哪種用法是正確的,您必須自己弄清楚您是在處理類型還是變量。


查看完整回答
反對 回復 2023-04-04
  • 1 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號