目录

为什么 grpc message 不可直接值复制

目录

grpc 生成的 message 对应的 struct 在引用的时候尽可能使用指针,因为在生成的xxx.pb.go中的 Struct 内嵌了一个state(protoimpl.MessageState)该类型内部内置一个pragma.DoNotCopy(sync.Mutex),

所以我们在代码中如果需要复制 struct 对象的话:

1.值拷贝:使用pb.clone(x).(类型)

2.指针引用,如果不是不是指针引用的话,虽然代码不一定出错,但是很有可能出现死锁,因为锁是不可复制的

参考:go grpc proto message 如何进行深拷贝