Go新手容易踩的坑(控制結構相關)

江湖乄夜雨發表於2024-07-06

1、忽視在range迴圈中元素被複制的事實

修改結構體切片中的元素

錯誤的修改方式

package tests

import (
    "fmt"
    "testing"
)

type Account struct {
    Balance int
}

func TestT1(t *testing.T) {

    accounts := []Account{
        {Balance: 10},
        {Balance: 20},
        {Balance: 30},
    }

    // 1、這樣做不會修改
    for _, a := range accounts {
        // 只改變了臨時變數a,並沒有改變切片中的元素
        a.Balance += 100
    }

    fmt.Println("accounts: ", accounts) // accounts:  [{10} {20} {30}]

}

正確的修改方式1:使用切片的索引訪問元素

1231

23

123

參考

注意一下,個人建議還是買紙質版的書,下面的部落格裡面因為是機翻的,所以不可避免會有一些看起來很難理解的地方~

https://gomis100.flygon.net/#/docs/03

相關文章