草庐IT

zval_struct

全部标签

struct - 不了解 Go 中的组合

在下面的示例中,我将http.ResponseWriter嵌入到我自己的名为Response的结构中。我还添加了一个名为Status的额外字段。为什么我不能从我的root处理程序函数中访问该字段?当我在我的根处理函数中打印出w的类型时,它说它是main.Response类型,这看起来是正确的,当我打印出struct我可以看到Status在那里。为什么我不能通过w.Status访问?这是标准输出的内容:main.Response{ResponseWriter:0xc2080440a0Status:0}代码:packagemainimport("fmt""reflect""net/http

struct - 嵌入式结构方法可以了解父/子吗?

几个月来,我一直在空闲时间断断续续地使用Go,我觉得我已经掌握了它的窍门。来自传统的OOP语言,例如Java和PHP,我很难掌握Go中的组合和嵌入。我认为它最近终于成功了,想更多地使用它,但我的一个想法遇到了障碍。假设我有一个包中的结构,该结构具有Validate方法,我将其嵌入到我当前正在使用的包中的结构中。有没有一种方法(我拥有两个包)可以获得对在Validate方法中嵌入的结构?有点像查看谁给我打电话的方式,因为我会在“父级”而不是嵌入式上调用它。我将尝试想象一下...typeBstruct{}func(bB)Validate(){//getreferencesomehowofA

session - 在 golang 中将 map、struct 设置为 session (gin gonic 框架)

我正在使用gingonic构建网络应用程序。我用https://github.com/gin-gonic/contrib/tree/master/sessions处理session。例如,我为session设置了一个整数值:functionTest(c*gin.Context){session:=sessions.Default(c)session.Set("mysession",123)session.Save()}在另一个Controller中,我可以通过session.Get("mysession")获取这个session。但是如果我设置map或struct。我只能在同一个Con

file - go - 使用 struct 读取二进制文件

我正在尝试使用golang读取二进制文件,但有一个问题。如果我这样读,一切都会好起来的packagemainimport("encoding/binary""fmt""os")typeHeaderstruct{str1int32str2[255]bytestr3float64}funcmain(){path:="test.BIN"file,_:=os.Open(path)deferfile.Close()thing:=Header{}binary.Read(file,binary.LittleEndian,&thing.str1)binary.Read(file,binary.Litt

去反射 : get correct struct type of interface

考虑一下:typemyStructstruct{Foostring`json:"foo"`}funcmain(){somelibrary.DoThing(func(thingmyStruct){//myStructshouldcontainunmarshaledJSON//providedbysomelibraryfmt.Printf("%v\n",thing)})}我是Go的新手,所以我担心这可能不是惯用代码。我想实现somelibrary.DoThing以便它可以通过反射从函数参数中正确推断出结构类型(如果可能的话)。这是我拥有的:constjsonData:=[]byte{`{"

go - 遍历一个 go struct 得到一个 csv 字符串

这个问题在这里已经有了答案:IteratethroughthefieldsofastructinGo(8个答案)关闭5年前。我有一个表示数据集的结构,我需要将其作为时间序列数据写入CSV文件。这是我目前所拥有的。typeDataFieldsstruct{Field1int,Field2string,...Fieldnint}func(dDataFields)String()string{returnfmt.Sprintf("%v,%v,...,%v",Field1,Field2,...,Fieldn)}有没有一种方法可以遍历结构的成员并使用它构造一个字符串对象?性能在这里并不是真正的问

dictionary - map[gorm.DB]struct{}{} 给出无效的映射键类型 gorm.DB

我想创建一组在我的应用程序中使用的gorm类型。所以我想用我的类型定义一个mapgorm.DB作为键和空的结构{}作为标志:var(autoMigrationsmap[gorm.DB]struct{})但是编译器不允许我这样做并出现错误:invalidmapkeytypegorm.DB。我可以使用指向gorm.DB的指针来欺骗它,例如:map[*gorm.DB]struct{}但这不是解决方案,因为我需要使它独一无二,如果我的map像db.AutoMigrate(&Chat{})一样填充,我可以获得许多具有不同地址的相似对象。另一个解决方案是制作一片gorm.DB:autoMigrat

go - 如何检查 *struct 的所有字段是否为 nil?

我不太确定如何解决这个问题,请随时编辑。通过下面的第一个代码块,我能够检查结构的所有字段是否为nil。但实际上,注入(inject)到结构中的值作为args.Review接收(请参阅下面的第二个代码块)。在第二个代码块中,如何检查args.Review中的所有字段是否为nil?TryitonGolangPlaygroundpackagemainimport("fmt""reflect")typereviewstruct{Stars*int32`json:"stars"bson:"stars,omitempty"`Commentary*string`json:"commentary"bs

go - []struct 中附加的不需要的类型

我正在学习go和stuckstructs我需要生成json:{"and":[{"term":{"name.second":"ba"}}]}}所以我可以用代码来做:packagemainimport("encoding/json""fmt")typeTermmap[string]interface{}typeTermHashstruct{Term`json:"term"`}typeFilterstruct{And[]TermHash`json:"and"`}funcmain(){varfilterFilterfilter.And=append(filter.And,TermHash{Te

go - struct String() 实现导致堆栈溢出并带有 Sprintf "+"标志

Golang新手问题:为什么我不能在String()实现方法中为结构使用"%+v"标志?我有一个结构,我想在其中实现String()方法以实现pretty-print。我喜欢给出的答案here,但我不喜欢打字,所以我试图修改它以使用结构的"%+v"格式标志返回一个字符串。来自fmt文档:%vthevalueinadefaultformatwhenprintingstructs,theplusflag(%+v)addsfieldnames如果我简单地用fmt.Printf("%+v",color)调用它,这工作正常,但如果我尝试将+标志放在String()实现,我遇到堆栈溢出(我第一次有