首頁 > 後端開發 > Golang > Go 中如何將字串切片轉換為字串指標切片?

Go 中如何將字串切片轉換為字串指標切片?

Patricia Arquette
發布: 2024-12-14 20:38:19
原創
566 人瀏覽過

How to Convert a Slice of Strings to a Slice of String Pointers in Go?

將字串切片轉換為字串指標切片

此任務的目標是將字串切片轉換為包含以下內容的切片:指向每個字串的指標。讓我們來看一個具體的例子:

values1 := []string{"a", "b", "c"}
var values2 []*string

for _, v := range values1 {
    fmt.Printf("%p | %T\n", v, v)
    values2 = append(values2, &v)
}
fmt.Println(values2)
登入後複製

初始混亂

v 儘管是一個字串,但在整個循環中仍然保持在相同的記憶體位址,這似乎違反直覺。這是因為在這種情況下,v不是指向字串的指針,而是values1中每個字串的副本。

兩個可能的解決方案

解1:

for i, _ := range values1 {
    values2 = append(values2, &values1[i])
}
登入後複製

此方法正確地將指針附加方法到原始值1中的元素切片到值2。不過,需要注意的是,values2 現在包含直接指向 value1 的位址,因此只要 value2 存在,values1 就會保留在記憶體中。

解2:

for _, v := range values1 {
    v2 := v
    values2 = append(values2, &v2)
}
登入後複製

此替代方案為每次迭代建立一個暫時局部變數(v2),為其指派v 的值,然後將指向v2 的指標附加到價值觀2。這確保了values1獨立於values2,並且對values1的任何修改都不會影響values2。

以上是Go 中如何將字串切片轉換為字串指標切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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