簡體   English   中英

如何從Golang中的切片獲取結構指針

[英]How can I get a struct pointer from a slice in golang

這是代碼:

package main

import (
    "fmt"
)

type demo struct {
     name string
}

func main() {
     demo_slice := make([]demo, 3)
     demo_slice[0] = demo{"str1"}
     demo_slice[1] = demo{"str2"}
     demo_slice[2] = demo{"str3"}

     point_demo_slice := make([]*demo, 3)
     for index, value := range demo_slice {
          fmt.Printf("\n%v==++++++++++++++%p\n", value, &value)
          point_demo_slice[index] = &value
     }
}

結果:

{str1}==++++++++++++++0x20818a220

{str2}==++++++++++++++0x20818a220

{str3}==++++++++++++++0x20818a220

0x20818a220是最后一個元素的指針值。

為什么所有的指針值都一樣?

如何獲得那些正確的指針值?

您不是在指切片的元素,而是局部value變量:

fmt.Printf("\n%v==++++++++++++++%p\n", value, &value)

因此,所有指針值都將是相同的(局部變量value的地址)。 如果您想要指向切片元素的指針,請獲取適當元素的地址:

fmt.Printf("\n%v==++++++++++++++%p\n", demo_slice[index], &demo_slice[index])

這將產生以下輸出,所有指針都不同:

{str1}==++++++++++++++0x104342e0

{str2}==++++++++++++++0x104342e8

{str3}==++++++++++++++0x104342f0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM