」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 除非我使用指針接收器,否則為什麼我的GO方法不修改實例值?

除非我使用指針接收器,否則為什麼我的GO方法不修改實例值?

發佈於2025-02-06
瀏覽:370

[2接收者。在此示例中,SetSomeField方法無法正常工作,因為其接收器不是指針類型。

要糾正此問題,我們修改了SetSomeField方法以接受指針接收器,如下所示:Why Doesn't My Go Method Modify the Instance Value Unless I Use a Pointer Receiver?
func(i *實現)setSomefield(newValue string){ ... }

type iface Interface { SetSomeField(NewValue String) getsomefield()字符串 } 類型實現結構{ 某些場字符串 } func(i *實現)getomefield()字符串{ 返回I.Somefield } func(i *實現)setSomefield(newValue string){ i.somefield = newValue } func create() *實現{ 返回和實現{somefield:“ hello”} } func main(){ var a iface a = create() A.Setsomefield(“世界”) fmt.println(a.getSomefield()) }

在此更新的代碼中,Create函數返回指向實現結構的指針,該結構實現了IFACE接口。因此,IFACE類型的一個變量可以參考實現結構的指針,從而允許SetSomeField方法修改其值。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3