Go 中透過指標接收器修改簡單類型的值
透過指標接收器方法修改簡單型別的值可以是Go 中的常見任務。然而,理解指針在這種情況下的行為至關重要。
在提供的範例中:
<br>type FooInt int<p>func (fi *FooInt ) FromString(i 字串) {</p><pre class="brush:php;toolbar:false">num, _ := strconv.Atoi(i) tmp := FooInt(num) fi = &tmp
}
當指標作為接收者傳遞時,會在方法內建立該指標的副本。方法內對副本所做的任何修改都不會影響原始指標。
在程式碼片段中,*fi 是傳遞給 FromString 方法的 fi 指標的副本。當您將 &tmp 指派給 *fi 時,您實際上是在變更副本的值,而不是原始 fi 指標。
要修改原始指標的值,您需要:
傳回新的指標值:
<br> func (fi <em>FooInt) FromString(i string) </em>FooInt {<pre class="brush:php;toolbar:false"> num, _ := strconv.Atoi(i) tmp := FooInt(num) return &tmp
}
將非零指標傳遞給要變更的值:
<br> func (fi <em>FooInt) FromString(i string, p </em>*FooInt) {<pre class="brush:php;toolbar:false"> num, _ := strconv.Atoi(i) tmp := FooInt(num) *p = &tmp
}
確保受者沒有>
num, _ := strconv.Atoi(i) *fi = FooInt(num)
以上是如何在 Go 中使用指標接收器修改簡單類型的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!