草庐IT

zval_struct

全部标签

go - 使用 reflect 模拟 struct.field

当字段是接口(interface)类型时,如何使用FieldByName获取与reflect.TypeOf(struct.field)相同的值?如图所示here,如果结构字段是一个接口(interface),reflect.TypeOf(struct.field)给我具体类型,但是reflect.ValueOf(struct).FieldByName("field").Type()给我界面。如果我只有struct和"field",是否可以使用reflect获取存储在struct.field中的具体类型? 最佳答案 你应该使用Elem

go - slice of struct != slice of interface 它实现了?

我有一个接口(interface)Model,它由结构Person实现。要获取模型实例,我有以下辅助函数:funcnewModel(cstring)Model{switchc{case"person":returnnewPerson()}returnnil}funcnewPerson()*Person{return&Person{}}上述方法允许我返回一个正确类型的Person实例(稍后可以使用相同的方法轻松添加新模型)。当我尝试执行类似的操作以返回模型slice时,出现错误。代码:funcnewModels(cstring)[]Model{switchc{case"person":r

go - protoc-gen-go struct xxx 隐蔽到 map[string]interface{}

.proto文件生成的.pb.go文件中的struct多了三个字段和一些其他的东西。像这样:将此struct转为json时,如果有一个字段为空,则该字段不会出现在json中。现在我知道可以使用jsonpb.Marshaler来完成。m:=jsonpb.Marshaler{EmitDefaults:true}现在,我将struct转换为ma​​p[string]interface{},将其放入InfluxDB。我必须将结构转换为map[string]interface{}。函数NewPoint需要。像这样:我在go中使用了structs.Map(value)函数,转换后的map多了三个字

c - 戈朗 : pack a struct

请考虑这个示例go代码:packagemain//#include//#include//#pragmapack(push,1)//structPacked_Struct{//uint16_tA;//uint16_tB;//uint32_tC;//uint16_tD;//};//#pragmapack(pop)////structUnPacked_Struct{//uint16_tA;//uint16_tB;//uint32_tC;//uint16_tD;//};//////voidprint_C_struct_size(){//structPacked_StructPacked_St

戈朗 : How to skip struct fields while reading from a buffer?

http://play.golang.org/p/RQXB-hCq_MtypeHeaderstruct{ByteField1uint32//4bytesByteField2[32]uint8//32bytesByteField3[32]uint8//32bytesSkipField1[]SomethingElse}funcmain(){varheaderHeaderheaderBytes:=make([]byte,68)//4+32+32==68headerBuf:=bytes.NewBuffer(headerBytes)err:=binary.Read(headerBuf,binar

戈朗 : How to change struct field value in slice of interfaces

Playground问题:https://play.golang.org/p/UKB8f4qGsM我有一部分接口(interface),我很确定它们有哪种类型(实际上我不知道,所以我必须输入switch它,但为了清楚起见我把它留了下来)。如何为接口(interface)后面的结构中的字段赋值?类型断言似乎带走了引用。我也尝试过使用指针,但它也不起作用,主要是因为我无法键入assert然后(类型*inter不能被类型断言)并且当我取消引用它时,它甚至变得毫无意义。..我在Go方面没有那么丰富的经验,如果能得到任何帮助,我将不胜感激。 最佳答案

csv - 转CSV : concatenate 2 csv columns into a single struct member

我可以使用GoCSV将2个csv列连接成一个结构成员吗??CSV格式是这样的colA,date,time,colBA1,2017-04-14,09:50:10,B1A2,2017-04-14,09:50:20,B2我想将此CSV映射到结构中typeMyStructstruct{ColAstring`csv:"colA"`DateTimestring//如何使用GoCSV或Go中的其他方式执行此操作? 最佳答案 (a)我认为没有受支持的方法可以做到这一点。但是,您可以实现一个将字段相互合并的自定义阅读器。相当专有,我不会推荐它。(b)

mongodb - 如何使用struct使用mongo-go-driver的更新功能

mongo-go-driver的update函数可以这样调用。filter:=bson.D{"username",username}update:=bson.D{{"$set",bson.D{{"name",person.Name},},}}result,err:=collection.UpdateOne(ctx,filter,update)typePersonstruct{IDprimitive.ObjectID`json:"_id,omitempty"bson:"_id,omitempty"`Usernamestring`json:"username,omitempty"bson:

go - 如何解码 map[string]interface 类型的 Go struct 字段

我正在尝试解码多维JSON。我的JSON包含动态key,因此我不能这样做。JSON{"id":"3","datetime":"2019-06-08","metadata":[{"a":"A"},{"b":"B"}]}转到文件typeChatsstruct{Idstringjson:"id"Datetimestringjson:"date"Metadatastringjson:"metadata"}chat:=models.Chats{}err:=c.BindJSON(&chat)iferr!=nil{c.Error(err)return}fmt.Println(chat)

Go Struct 中的 Go Protobuf 声明和可选字段(字符串指针)

我在使用Protoc和包含可为空字符串字段的现有结构时遇到了一些问题。我试图序列化以进行传输的结构包含一堆在json中可以为null的字段(因此我们可以区分null、""和一个设置值).typeMessagestruct{Path*string`json:"path"`}因此,如果用户发送一个空的json字符串{},路径将为nil而不是"",而{"path":""}也是有效的,并且与{"path":null}不同。我想出的proto3声明显然看起来像这样(并且是可选的,因为required和optional从proto3中删除:syntax="proto3";messageMessag