首頁 > 後端開發 > Golang > 如何在 Go 中修改結構體中的切片?

如何在 Go 中修改結構體中的切片?

Susan Sarandon
發布: 2024-11-21 06:00:14
原創
474 人瀏覽過

How to Modify a Slice Within a Struct in Go?

如何從結構體中的切片中刪除元素

從結構體中的切片中刪除元素需要解決幾個關鍵注意事項。

問題:切片長度仍然存在不變

在提供的程式碼片段中,removeFriend 方法旨在從 Friends 切片中刪除一個元素。然而,切片的最後一個元素被複製,而不是切片變得更短。發生這種情況是因為該方法使用值接收器,修改結構體的副本而不是原始值。

解決方案:利用指標接收器

以確保更改如果方法內的操作影響原始結構,則應使用指標接收器。這允許該方法修改實際的結構實例。 Go 中指標接收器的語法是 func (receiver *struct_name)。

範例:

type Guest struct {
    id      int
    name    string
    surname string
    friends []int
}

func (g *Guest) removeFriend(id int) {
    for i, other := range g.friends {
        if other == id {
            g.friends = append(g.friends[:i], g.friends[i+1:]...)
            break
        }
    }
}
登入後複製

說明:

利用指標接收器 (*Guest),removeFriend方法現在可以修改好友切片

慣用的接收者命名

需要注意的是,像 self 這樣的接收者名稱在 Go 中並不常用。相反,更具體的名稱(例如 g 或 guest)更適合傳達該方法的意圖。

以上是如何在 Go 中修改結構體中的切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板