Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menentukan jenis pembolehubah google.protobuf.Any dengan betul?
editor php Yuzai hari ini akan memperkenalkan kepada anda kaedah untuk menentukan jenis pembolehubah google.protobuf.Any. Semasa proses pembangunan, kita sering menghadapi situasi di mana kita perlu menentukan jenis pembolehubah Untuk pembolehubah google.protobuf.Sebarang jenis, mungkin terdapat beberapa masalah khas dalam menentukan jenisnya. Dalam artikel ini, kami akan berkongsi beberapa kaedah dan teknik untuk menentukan pembolehubah jenis google.protobuf.Any dengan betul untuk membantu semua orang menyelesaikan masalah ini dengan lebih baik. Sama ada anda seorang pemula atau pembangun berpengalaman, saya percaya artikel ini boleh membantu anda.
Sila beritahu saya apa yang salah dengan kod ini, mengapa jenis pembolehubah jenis url yang dihantar google.protobuf.ada tidak ditentukan?
package main import ( "fmt" "google.golang.org/protobuf/reflect/protoreflect" "google.golang.org/protobuf/reflect/protoregistry" ) func main() { var res protoregistry.MessageTypeResolver = protoregistry.GlobalTypes typeUrl := "type.googleapis.com/google.protobuf.StringValue" fmt.Println(protoreflect.FullName(typeUrl)) msgType, err := protoregistry.GlobalTypes.FindMessageByName(protoreflect.FullName("google.protobuf.StringValue")) if err != nil { fmt.Println(err) } fmt.Println(msgType) msgType, err = res.FindMessageByURL(typeUrl) if err != nil { fmt.Println(err) } fmt.Println(msgType) }
Prototaip: tidak ditemui Prototaip: tidak dijumpai
Ralatnya ialah jenis mesej tidak didaftarkan di protoregistry.notfound
,因为在protoregistry.globaltypes
.
Untuk mendaftar google.protobuf.any
,您应该导入包google.golang.org/protobuf/types/known/anypb
。并且 google.protobuf.any
由该包的 init
pendaftaran fungsi (lihat kod sumber).
Daftar google.protobuf.stringvalue
,您应该导入包 google.golang.org/protobuf/types/known/wrapperspb
.
Berikut ialah demo yang dikemas kini untuk mencari bait mesej google.protobuf.stringvalue
:
package main import ( "fmt" "google.golang.org/protobuf/reflect/protoregistry" // importing the package solely for its side-effects (initialization). // See https://go.dev/ref/spec#Import_declarations. _ "google.golang.org/protobuf/types/known/anypb" _ "google.golang.org/protobuf/types/known/wrapperspb" ) func main() { res := protoregistry.GlobalTypes fmt.Println("NumMessages:", res.NumMessages()) msgType, err := protoregistry.GlobalTypes.FindMessageByName("google.protobuf.StringValue") if err != nil { fmt.Println(err) } fmt.Println(msgType) msgType, err = res.FindMessageByURL("type.googleapis.com/google.protobuf.StringValue") if err != nil { fmt.Println(err) } fmt.Println(msgType) }
Atas ialah kandungan terperinci Bagaimana untuk menentukan jenis pembolehubah google.protobuf.Any dengan betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!