如果你用protobuf,可以利用proto插件直接生成带有gorm标签的结构体。这样就不用自己再定义一个gorm用的结构体然后为如何优雅的转换发愁了。这有一个现成的插件:

优雅的转换结构体必然要用到反射,因而影响性能。对于类似的问题,go的设计哲学是推荐用生成器。比如这个proto插件: