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

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

golang中的可變getter函數

golang中的可變getter函數

Go
喵喵時光機 2021-11-22 15:09:17
考慮 go 中的以下堆棧實現:package mainimport "fmt"var a [10]intvar top int = -1func main() {    printStack()    push(1)    printStack()    push(23)    printStack()    pop()    push(2)    printStack()    println("Top element is", getTop)}func push(x int) {    top += 1    a[top] = x}func pop() {    top -= 1}func getTop() int {    return a[top]}func printStack() {    fmt.Println(top+1, "Stack: ", a, "Top", getTop)}問題:當我使用時println("Top element is", getTop),它打印出內存地址0x193928,但當我調用時println("Top element is", getTop()),它返回2。返回 2 是有道理的,但我不明白為什么它返回內存地址?不應該調用沒有括號的 getTop 是無效的嗎?似乎在 golang 中不能有同名的變量和函數。這是正確的假設嗎?播放:https : //play.golang.org/p/vvOGG296gr
查看完整描述

1 回答

?
慕的地8271018

TA貢獻1796條經驗 獲得超4個贊

  1. 您可以將您的函數作為 var 傳遞,例如:https : //play.golang.org/p/wzGVtsEFQk。所以getTop是“函數指針”,這解釋了被印刷的地址

  2. #1 解釋:如果在同一個作用域中聲明,你的 var 名和函數名會沖突


查看完整回答
反對 回復 2021-11-22
  • 1 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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