Go 如何访问向量中的结构字段。向量?

Go 如何访问向量中的结构字段。向量?,go,Go,我正在寻找帮助,了解如何访问container.vector.vector中的结构字段 以下代码: package main import "fmt" import "container/vector" func main() { type Hdr struct { H string } type Blk struct { B string } a := new(vector.Vector) a.Push(H

我正在寻找帮助,了解如何访问container.vector.vector中的结构字段

以下代码:

package main

import "fmt"
import "container/vector"

func main() {
    type Hdr struct {
        H string
    }
    type Blk struct {
        B string
    }

    a := new(vector.Vector)

    a.Push(Hdr{"Header_1"})
    a.Push(Blk{"Block_1"})

    for i := 0; i < a.Len(); i++ {
        fmt.Printf("a.At(%d) == %+v\n", i, a.At(i))
        x := a.At(i)
        fmt.Printf("%+v\n", x.H)
    }
}
那么,一个人究竟如何访问“H”或“B”?似乎我需要将这些接口转换为结构,但是。。。我不知道。我不知所措

感谢您的帮助。

使用Go或区分
Hdr
Blk
类型。比如说,

package main

import (
    "fmt"
    "container/vector"
)

func main() {
    type Hdr struct {
        H string
    }
    type Blk struct {
        B string
    }

    a := new(vector.Vector)

    a.Push(Hdr{"Header_1"})
    a.Push(Blk{"Block_1"})

    for i := 0; i < a.Len(); i++ {
        fmt.Printf("a.At(%d) == %+v\n", i, a.At(i))
        x := a.At(i)
        switch x := x.(type) {
        case Hdr:
            fmt.Printf("%+v\n", x.H)
        case Blk:
            fmt.Printf("%+v\n", x.B)
        }
    }
}
主程序包
进口(
“fmt”
“容器/向量”
)
func main(){
类型Hdr结构{
H字符串
}
类型Blk结构{
B弦
}
a:=新的(vector.vector)
a、 推送(Hdr{“Header_1”})
a、 推送(Blk{“Block_1”})
对于i:=0;i
但是,从发布之日起:

容器/向量包已被删除。切片比较好:

因此,对于最新版本

package main

import "fmt"

func main() {
    type Hdr struct {
        H string
    }
    type Blk struct {
        B string
    }

    var a []interface{}

    a = append(a, Hdr{"Header_1"})
    a = append(a, Blk{"Block_1"})

    for i := 0; i < len(a); i++ {
        fmt.Printf("a[%d]) == %+v\n", i, a[i])
        x := a[i]
        switch x := x.(type) {
        case Hdr:
            fmt.Printf("%+v\n", x.H)
        case Blk:
            fmt.Printf("%+v\n", x.B)
        }
    }
}
主程序包
输入“fmt”
func main(){
类型Hdr结构{
H字符串
}
类型Blk结构{
B弦
}
var a[]接口{}
a=追加(a,Hdr{“Header_1”})
a=追加(a,Blk{“Block_1”})
对于i:=0;i
使用Go或来区分
Hdr
Blk
类型。比如说,

package main

import (
    "fmt"
    "container/vector"
)

func main() {
    type Hdr struct {
        H string
    }
    type Blk struct {
        B string
    }

    a := new(vector.Vector)

    a.Push(Hdr{"Header_1"})
    a.Push(Blk{"Block_1"})

    for i := 0; i < a.Len(); i++ {
        fmt.Printf("a.At(%d) == %+v\n", i, a.At(i))
        x := a.At(i)
        switch x := x.(type) {
        case Hdr:
            fmt.Printf("%+v\n", x.H)
        case Blk:
            fmt.Printf("%+v\n", x.B)
        }
    }
}
主程序包
进口(
“fmt”
“容器/向量”
)
func main(){
类型Hdr结构{
H字符串
}
类型Blk结构{
B弦
}
a:=新的(vector.vector)
a、 推送(Hdr{“Header_1”})
a、 推送(Blk{“Block_1”})
对于i:=0;i
但是,从发布之日起:

容器/向量包已被删除。切片比较好:

因此,对于最新版本

package main

import "fmt"

func main() {
    type Hdr struct {
        H string
    }
    type Blk struct {
        B string
    }

    var a []interface{}

    a = append(a, Hdr{"Header_1"})
    a = append(a, Blk{"Block_1"})

    for i := 0; i < len(a); i++ {
        fmt.Printf("a[%d]) == %+v\n", i, a[i])
        x := a[i]
        switch x := x.(type) {
        case Hdr:
            fmt.Printf("%+v\n", x.H)
        case Blk:
            fmt.Printf("%+v\n", x.B)
        }
    }
}
主程序包
输入“fmt”
func main(){
类型Hdr结构{
H字符串
}
类型Blk结构{
B弦
}
var a[]接口{}
a=追加(a,Hdr{“Header_1”})
a=追加(a,Blk{“Block_1”})
对于i:=0;i
container/vector
软件包自2011-09-01年以来已被弃用,不再是标准库的一部分。使用切片和。自2011-09-01以来,
container/vector
包已被弃用,不再是标准库的一部分。用切片代替。确认!我仍然习惯于评论系统。@mtw:如果这是你问题的答案,请点击答案上投票号码下的复选标记=)@Tom:done!由于某些原因,由于声誉不好,我无法将答案标记为已接受。不得不等了几个小时。再次感谢,peterSO。@mtw:请编辑您的问题,从标题中删除“[已解决]”并删除解决方案代码。我会自己编辑,但编辑到问题中的代码与公认答案中的代码并不完全相同,我不知道如何解决这个问题。@KeithThompson。好的没问题。在这篇文章中包含“解决方案”的公认方式是什么?我是否应该将其添加为问题的注释?确认!我仍然习惯于评论系统。@mtw:如果这是你问题的答案,请点击答案上投票号码下的复选标记=)@Tom:done!由于某些原因,由于声誉不好,我无法将答案标记为已接受。不得不等了几个小时。再次感谢,peterSO。@mtw:请编辑您的问题,从标题中删除“[已解决]”并删除解决方案代码。我会自己编辑,但编辑到问题中的代码与公认答案中的代码并不完全相同,我不知道如何解决这个问题。@KeithThompson。好的没问题。在这篇文章中包含“解决方案”的公认方式是什么?我应该把它作为对问题的评论吗?