Как установить необязательный параметр после демаршалинга Protobuf (proto2) в Golang?
У меня есть 5 полей в protobuf ( 3 обязательных поля и 2 необязательных поля). Со стороны производителя я отправлю 3 требуемых поля (маршалл) и получу эти (немаршалл) 3 обязательных поля на стороне потребителя. Теперь я хочу добавить эти два значения необязательных параметров на стороне потребителя. Является ли это возможным? если да, то как?
Заранее спасибо
1 ответ
Решение
Чтобы обновить поле для структуры, которая уже находится в памяти, объявите имя переменной с полем, как в примере ниже. Если someStruct находится в памяти, значение можно перезаписать в любое время.
someStruct.SomeField = SomeValue
package main
import (
"fmt"
)
type Data struct {
FieldOne string
FieldTwo int
FieldThree []string
FieldFour float64
}
func main() {
data := createData("A string", 9)
data = data.rcv()
fmt.Println(data)
}
func createData(f1 string, f2 int) *Data {
d := &Data{}
d.FieldOne = f1
d.FieldTwo = f2
return d
}
func (d *Data) rcv() *Data {
d.FieldThree = []string{"string1", "string2"}
d.FieldFour = 1.2
return d
}