1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| package main
import ( "fmt" user_proto "protobuf/user-proto" "time"
"google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/anypb" "google.golang.org/protobuf/types/known/timestamppb" )
func main() { any1, _ := anypb.New(&user_proto.Address{ Provice: "hunan", City: "Changsha", }) user := &user_proto.User{ Name: "lin", Age: 10, Gender: user_proto.Gender_FEMALE, Birthday: timestamppb.New(time.Date(2004, time.December, 1, 1, 0, 0, 0, time.Local)), Addr: &user_proto.Address{ Provice: "Guangdong", City: "ShenZhen", }, Hobys: []string{"yumaoqiu", "lanqiu", "pingpangqiu"}, Data: map[string]*anypb.Any{ "a": any1, }, ByteData: []byte("Today is a good day!"), Telephone: &user_proto.UserPhone{ AreaCode: "+86", Number: "13683200000", }, Level: &user_proto.User_A{A: true}, Level2: &user_proto.User_D{D: false}, } fmt.Println(user) fmt.Println("-------------------------------------") bytes, err := proto.Marshal(user) fmt.Println(bytes, err) fmt.Println("-------------------------------------") user1 := &user_proto.User{} err = proto.Unmarshal(bytes, user1) fmt.Println(user1, err) }
|