Как установить необязательный параметр после демаршалинга 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
}
Другие вопросы по тегам