UPDATEgolang RPC未返回時struct包含嵌套結構
從料滴編碼移動到JSON固定的問題。不過,我仍然想知道爲什麼這不能用gob工作。
,所以我的客戶端代碼看起來像這樣
account := new(database.Account)
err := client.Call("AccountDb.FindAccount", "username", account)
if err != nil {
logger.FATAL.Print(err.Error())
return
}
logger.INFO.Print(account)
在服務器端AccountDb.FindAccount
看起來像這樣
func (t *AccountDb) FindAccount(args *string, reply *Account) error {
reply.Username = "this is a test"
return nil
}
的結構爲帳戶看起來像這樣
type Account struct {
Id int
Username string
Password string
Email string
Created time.Time
LastLoggedIn time.Time
AccessLevel int
Banned struct {
reason string
expires time.Time
}
}
,如果我嘗試爲了執行rpc,請求開始並且服務器執行該過程。然而,程序然後掛起,程序不會返回!但是,如果我從帳戶結構中刪除禁止的匿名結構它工作正常!爲什麼是這樣?有沒有解決這個問題的方法?
編輯 客戶端和服務器註冊的代碼如下所示
客戶
client, err = rpc.DialHTTP("tcp", "127.0.0.1:9001")
if err != nil {
logger.FATAL.Panic(err.Error())
}
服務器
defer db.Close()
account := new(database.AccountDb)
account.Database = db
rpc.Register(account)
rpc.HandleHTTP()
l, e := net.Listen("tcp", ":9001")
if e != nil {
logger.FATAL.Fatal("listen error:", e)
}
http.Serve(l, nil)
你有沒有試過創建一個輔助結構來保存'禁止的'字段信息? – nesv
我剛剛嘗試過此操作,並且遇到同樣的問題 – zidsal