我最近重組了我的代碼,現在main包下有兩個包:chain和api.在chain我定義了一些結構SomeStruct1和這些結構的SomeStruct2接口。SomeInterface下面是它chain/cli.go的樣子。package chaintype CLI struct{}func (cli *CLI) Run() { ... gob.Register(SomeStruct1{}) gob.Register(SomeStruct2{}) ...}我api/api.go在里面放了另一個類似的地方。Run()gob.Register(chain.SomeStruct1{})main.go看起來像這樣:package mainimport ( "myproj/api" "myproj/chain")func main() { // I have also tried the following lines. // gob.Register(chain.SomeStruct1{}) // gob.Register(chain.SomeStruct2{}) go api.Run() cli := chain.CLI{} cli.Run()}但是,我在運行時遇到了錯誤gob: name not registered for interface: "main.SomeStruct1"。當我將所有代碼都放在一個包中時,這并沒有發生main,我覺得SomeStruct1現在在chain包下很奇怪,但錯誤指的是main.SomeStruct1. 我哪里弄錯了gob.Register()?
gob.Register 名稱未在另一個包中注冊接口
慕田峪7331174
2023-04-24 16:03:31