2 回答

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)該將指針傳遞給你的指針。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
您需要兩個(gè)things--main
需要的分配空間ps
是input
可以寫(xiě)進(jìn)去,您可以通過(guò)更換做var v *ps
用v := 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í),代碼中需要取消引用。
- 2 回答
- 0 關(guān)注
- 205 瀏覽
添加回答
舉報(bào)