第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么指針在這個(gè) Go 程序中失去了它的價(jià)值

為什么指針在這個(gè) Go 程序中失去了它的價(jià)值

Go
不負(fù)相思意 2021-09-09 20:21:46
我不明白為什么指針s是nil即使在input()方法初始化它。任何的想法?package mainimport "fmt"type ps stringfunc(s *ps)input(){    x := ps("a")    s = &x}func(s *ps)output(){}func main() {    var v *ps    v.input()    if v == nil{        fmt.Println("v shouldn't be nil")    }}游樂(lè)場(chǎng)http://play.golang.org/p/jU2hoMP7TS
查看完整描述

2 回答

?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

v 值 (0) 被傳遞到 v.input。傳遞的值存儲(chǔ)在局部變量 s 中。s 值被修改。沒(méi)有人將新的 s 值保存回 v 中。

如果您想在函數(shù)中修改某些內(nèi)容,則必須傳遞指向該值的指針。(或切片、貼圖等的參考)。

如果你想改變指針值,你應(yīng)該將指針傳遞給你的指針。



查看完整回答
反對(duì) 回復(fù) 2021-09-09
?
烙印99

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊

您需要兩個(gè)things--main需要的分配空間psinput可以寫(xiě)進(jìn)去,您可以通過(guò)更換做var v *psv := new(ps)。該字符串會(huì)"",但它并不不管它是什么,只是說(shuō)有空間,在內(nèi)存中設(shè)置了一個(gè)串標(biāo)頭input可以寫(xiě)入。正如 Momer 所說(shuō),否則指針nil和您的程序會(huì)在試圖取消引用它時(shí)發(fā)生恐慌。

并且為了通過(guò)指針賦值,input需要使用*s = x. 由于*s非正式地是“獲取s指向的內(nèi)容”,因此您可以將其理解為“更改s指向的內(nèi)容x”。通常,點(diǎn)運(yùn)算符和方法調(diào)用周圍的自動(dòng) ref/deref 行為使您免于這樣做,但是當(dāng)您通過(guò)指針類型分配或執(zhí)行其他操作(算術(shù)、索引等)時(shí),代碼中需要取消引用。


查看完整回答
反對(duì) 回復(fù) 2021-09-09
  • 2 回答
  • 0 關(guān)注
  • 205 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)