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
}
The структура для счета выглядит следующим образом
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 запускаются запросы, и сервер выполняет процедуру. Однако программа затем зависает, и процедура не возвращается! Если, однако, я удаляю Banned anonymous struct из структуры Account, она отлично работает! Почему это? есть ли решение этой проблемы?
редактировать клиент и регистр сервера код выглядит следующим образом
Client
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