gpt4 book ai didi

go - 在Golang中将其作为接口(interface)后如何恢复结构类型

转载 作者:行者123 更新时间:2023-12-01 22:44:18 25 4
gpt4 key购买 nike

我想将一些类似的 func 代码合并到一个 func 中,但是每个旧 func 都使用不同类型的结构,所以我打算通过不同类型的字符串创建模型。
所以我做这样的事情:

type A struct {
filed string
}
type B struct {
filed string
}
and still C, D, E, F here...(every struct has its own method different with others)

我想在一个地方创建这些类型:
create(typeName string) interface {
switch typeName {
case A:
return &A{}
case B:
return &B{}
....(more case than 10 times)
}
}

然后我在这里使用 create() :
model := create("A")

现在, model是接口(interface)的类型,没有A的文件,如何简单地将模型的类型恢复为A

最佳答案

以下是如何使用 type assertion 的示例将接口(interface)转换为底层结构

这里e属于结构类型,因此您可以访问其任何字段或结构方法。

package main

import (
"fmt"
)

type A struct {
AF int
}

type B struct {
BF string
}

func main() {
ds := []interface{}{
A{1},
B{"foo"},
}

for _, d := range ds {
switch e := d.(type) {
case A:
fmt.Println(e.AF)
case B:
fmt.Println(e.BF)
}
}
}

关于go - 在Golang中将其作为接口(interface)后如何恢复结构类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62322023/

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