gpt4 book ai didi

go - 从 interface{} 到嵌入类型的类型断言

转载 作者:行者123 更新时间:2023-12-01 22:08:06 27 4
gpt4 key购买 nike

我想使用 interface{} 中的类型断言到类型我确定interface{}的内容已嵌入引用。 https://play.golang.org/p/G8YrS7WZyQU

package main
import "fmt"

type S1 struct {}
type S2 struct {*S1}

func main() {
s := interface{}(&S2{&S1{}})

// I do not know the s type, but know that it is of `struct {*S1}`
_, ok := s.(*S1)
fmt.Println(ok)
}

在 Go 中甚至有可能吗?

最佳答案

不,你不能这样做。规范说您只能将接口(interface)类型断言为与存储在接口(interface)中的值的类型相同的类型。它还说“A defined type 总是不同于任何其他类型”。结构兼容还不够好;您可以在断言中使用的唯一类型是 S2 .

在将断言指向 Kind会在那个 elem 的 Struct 上成功(但不是对嵌入类型的断言)。

关于go - 从 interface{} 到嵌入类型的类型断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59806939/

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