假设我有两个结构:type Pet { Name string}type PetTwo { Name string}现在假设我将 Pet 转换为接口。假设我用来执行此操作的包不了解 Pet 类型,如何从界面中键入 Assert PetTwo?var ctx context.Contextpet := Pet{ Name : "Foo" }ctx = context.WithValue(ctx, "pet", pet)petTwo := ctx.Value("pet").(PetTwo) // panicsfmt.Println(petTwo.Name) // prints "Foo"有没有一种方法可以在没有类型断言的情况下访问 pet 的内容?我尝试过将结构相互嵌入、类型断言、未命名类型的类型断言等等。主要目标是能够Pet在不知道类型的情况下访问包的内容Pet。实现该目标的一个丑陋的 hack 是从 json 进行编组和解组: jsonData, _ := json.Marshal(ctx.Value("pet")) var petTwo PetTwo json.Unmarshal(jsonData, &petTwo) fmt.Println(petTwo.Name) // prints "Foo"
- 1 回答
- 0 关注
- 100 浏览
添加回答
举报
0/150
提交
取消