gpt4 book ai didi

go - 将结构或指向结构的指针添加到 slice

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:28 25 4
gpt4 key购买 nike

假设我有这样的结构:

type Foo struct {
F string `zoom:"1"`
}

type Bar struct {
F string `zoom:"2"`
}

type Baz struct {
F string `zoom:"3"`
}

假设我想创建一个可以从每个结构中提取 f 字段的函数,它可能看起来像:

func extractField(s []struct{}){
for _, v := range s {
t := reflect.TypeOf(v{})
f, _ := t.FieldByName("F")
v, ok := f.Tag.Lookup("zoom")
}
}

有没有办法将结构传递给 extractField?如果我这样做:

extractField([]struct{}{Foo, Bar, Baz})

我收到这个错误:

Type Foo is not an expression
Type Bar is not an expression
Type Baz is not an expression

我只想将 3 个结构传递给 extractField 函数。

最佳答案

我能弄清楚如何做到这一点的唯一方法是这样的:

type Foo struct {
F string `zoom:"1"`
}

type Bar struct {
F string `zoom:"2"`
}

type Baz struct {
F string `zoom:"3"`
}


func extractField(s []interface{}){
for _, v := range s {
t := reflect.TypeOf(v)
f, _ := t.FieldByName("F")
v, ok := f.Tag.Lookup("zoom")
fmt.Println(v,ok)
}
}

func main(){

extractField([]interface{}{Foo{},Bar{},Baz{}}) // <<<< here

}

不确定是否有一种方法可以在不先“实例化”的情况下传递结构。

关于go - 将结构或指向结构的指针添加到 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53576324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com