我是想将 interface 的值 转到 结构体中
时间: 2024-03-17 17:40:43 浏览: 18
在 Go 中,可以通过类型断言将接口类型的值转换为具体的结构体类型。具体步骤如下:
1.定义接口类型
```
type MyInterface interface {
Method1() string
Method2() int
}
```
2.定义结构体类型,并实现接口中的所有方法
```
type MyStruct struct {
Field1 string
Field2 int
}
func (s *MyStruct) Method1() string {
return s.Field1
}
func (s *MyStruct) Method2() int {
return s.Field2
}
```
3.定义一个接口类型的变量,并将结构体指针赋值给它
```
var myInterface MyInterface
myInterface = &MyStruct{
Field1: "test",
Field2: 123,
}
```
4.使用类型断言将接口类型的值转换为具体的结构体类型
```
if myStruct, ok := myInterface.(*MyStruct); ok {
fmt.Println(myStruct.Field1, myStruct.Field2)
} else {
fmt.Println("类型断言失败")
}
```
在这个例子中,使用类型断言将 myInterface 变量转换为 MyStruct 类型的指针 myStruct。如果类型断言成功,ok 的值为 true,可以通过 myStruct 访问结构体的字段。否则,ok 的值为 false,表示类型断言失败。