1 func func1() {
2 clt := &protooo.CollectInfo{} // 这是一个 proto Message
3 clt.TableName = proto.String("table1") // 给字段赋值
4 //msgv1 := proto.MessageV1(proto.MessageV2(clt))
5 msg := proto.MessageReflect(clt) // 获取反射 Message
6 msgDesc := msg.Descriptor() // Descriptor
7 //enumDs := msgDesc.Enums()
8 //for i:=0; i<enumDs.Len(); i++ {
9 // fmt.Println(enumDs.Get(i).Name())
10 //}
11
12 fmt.Println("=======================================================")
13
14 fieldDs := msgDesc.Fields() // 获取所有字段
15 for i:=0; i<fieldDs.Len(); i++ {
16 fieldD := fieldDs.Get(i)
17 // logid protooo.CollectInfo.logid uint64
18 // 返回 proto文件中的字段名
19 fmt.Printf("%s %s %v\n", fieldD.Name(), fieldD.FullName(), fieldD.Kind())
20 if fieldD.Name() == "table_name" {
21 val := msg.Get(fieldD) // 获取字段值
22 fmt.Println(val.String()) // table1
23 }
24 }
25 }