假設(shè)我有兩個結(jié)構(gòu):type Pet { Name string}type PetTwo { Name string}現(xiàn)在假設(shè)我將 Pet 轉(zhuǎn)換為接口。假設(shè)我用來執(zhí)行此操作的包不了解 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 的內(nèi)容?我嘗試過將結(jié)構(gòu)相互嵌入、類型斷言、未命名類型的類型斷言等等。主要目標(biāo)是能夠Pet在不知道類型的情況下訪問包的內(nèi)容Pet。實現(xiàn)該目標(biāo)的一個丑陋的 hack 是從 json 進行編組和解組: jsonData, _ := json.Marshal(ctx.Value("pet")) var petTwo PetTwo json.Unmarshal(jsonData, &petTwo) fmt.Println(petTwo.Name) // prints "Foo"
- 1 回答
- 0 關(guān)注
- 163 瀏覽
添加回答
舉報
0/150
提交
取消