我正在尝试将内部类型转换为protobuf生成的类型,但无法获取要转换的数组。我是新手,所以我不知道所有可能有用的方法。但这是我的尝试。运行此代码时,我得到
紧急:运行时错误:无效的内存地址或nil指针取消引用 [signal SIGSEGV:细分违规代码= 0x1 addr = 0x8 pc = 0x86c724]
还有许多其他字节数据。我想知道将内部结构转换为protobuf的最佳方法是什么。我认为protobuf生成的代码是指针遇到的麻烦最大。
原始定义
message GameHistory {
message Game {
int64 gameId = 1;
}
repeated Game matches = 1;
string username = 2;
}
message GetRequest {
string username = 1;
}
message GetGameResponse {
GameHistory gameHistory = 1;
}
执行代码
// GameHistory model
type GameHistory struct {
Game []struct {
GameID int64 `json:"gameId"`
} `json:"games"`
UserName string `json:"username"`
}
func constructGameHistoryResponse(gameHistory models.GameHistory) *pb.GetGameResponse {
games := make([]*pb.GameHistory_Game, len(gameHistory.Games))
for i := range matchHistory.Matches {
games[i].GameID = gameHistory.Games[i].GameID
}
res := &pb.GetGameResponse{
GameHistory: &pb.GameHistory{
Games: games,
},
}
}
答案 0 :(得分:1)