草庐IT

Java分支结构

全部标签

go - "Missing type in composite literal"结构中映射的匿名列表

编辑:编译错误在Missingtypeincompositeliteral与我的问题相同,它们的组成差异很大,以至于我不明白我将如何将解决方案应用到我的程序中,因此创建了这个问题。我是新来的,我正在尝试为我已验证可以成功调用的函数编写测试,如下所示:funcmain(){items:=[]map[string]int{map[string]int{"value":100,"weight":5,},map[string]int{"value":90,"weight":2,},map[string]int{"value":80,"weight":2,},}fmt.Println(KnapS

go - 等效结构上字段的接口(interface)转换

有没有一种直接的方法可以将某些字段为“通用”(接口(interface){})的结构转换为另一种具有相同字段名称但“强类型”(>int,string,等等)?让我们说,给定定义:packagemainimport("fmt")typeGenericDatastruct{HardintSoftinterface{}}typeDatastruct{HardintSoftint}typeGenericDataGeneratorfunc()GenericDatafuncgenerateGenericData()interface{}{returnGenericData{1,2}}funcret

go - 释放结构图

我正在处理一个非常大的结构指针映射。它在程序的整个生命周期中不断增长(我将它用作缓冲区),我编写了一个函数,该函数应该在调用时减小它的大小。typeSstruct{auint32b[]uint32}s:=make(map[uint32]*S)fork,v:=ranges{delete(s,k)s[k]=&S{a:v.a}}我从map的每个元素中删除了b,因此我预计内存中map的大小会缩小(b是长度>10的slice)。但是内存没有释放,为什么? 最佳答案 无论sliceb的容量如何,映射值&S(一个指针)的大小都是相同的。packa

go - 在 : panic: runtime error: index out of range 中转换数据结构

我在go中有一个数据结构:typeAPIMainstruct{CodeConvstring`json:"codeConv"`Starttime.Time`json:"start"`Endtime.Time`json:"end"`Details[]struct{IDPrmstring`json:"idPrm"`Keys[]struct{Timestamptime.Time`json:"timestamp"`Valuefloat64`json:"value"`}`json:"keys"`}`json:"details"`}我需要转换为:typeDataGroupedByTSstruct{C

去反射(reflect)通过结构标签找到

typeAstruct{Name*NameS`json:"name"`}对于一个structA,有没有一种方法可以反射(reflect)我可以通过structtag找到一个字段喜欢reflect.ValueOf(&ns)//structs:=ps.Elem()s.FieldByTag("name") 最佳答案 没有内置方法/函数可以执行此操作。reflect中现有的FieldBy*方法被实现为循环(参见`src/reflect/type.go)。你也可以在这里写一个循环来实现你需要的东西。一种方法可能是这样的:funcfieldBy

go - 在 Go 中通过反射创建结构

我想完全动态地定义一个结构,这样我就可以得到下面的结构,但不需要先定义它?typeDatastruct{astringbint`json:"b"`}d:=Data{} 最佳答案 应用程序可以使用reflect.StructOf以编程方式创建结构,但结构中的所有字段都必须是exported.问题将结构作为值获取,但指向结构的指针可能对应用程序更有用。鉴于上述情况,此答案显示了如何在编译时不定义类型的情况下执行以下操作:typeDatastruct{Astring`json:"a"`Bint`json:"b"`}vardinterfac

go - 编码 xml 字段时如何使用结构标签?

问题更多的是“可以去做吗?”然后解决实际问题。packagemainimport("encoding/xml""fmt""log")typeExamplestruct{FloatFloatFloat3Float`printf:"%.3f"`Float7Float`printf:"%.7f"`}typeFloatfloat64funcmain(){e:=Example{Float:1.0,Float3:2.0,Float7:3.0,}b,err:=xml.MarshalIndent(e,"","")iferr!=nil{log.Fatal(err)}fmt.Println(string(

go - 未导入 Github 分支中的更改

我正在编写一个MIDI解析器,它可以拆分MIDI文件并调整不同轨道上的音量以允许特定的语音隔离以帮助练习。我正在使用Go库,EasyMIDI.但是,我遇到了库未涵盖的用例,因此我fork了存储库并进行了更改,以在短期内解决我的问题。在我的go.mod和import语句中使用我的forkGithubURL时,我能够成功构建,但我所做的代码更改没有反射(reflect)出来。我将函数GetChannel()添加到接口(interface)中,因此应该将其列为一个选项。当我点击另一个最初实现的功能的源代码时,我看到我的VSCode在抓取代码时引用了非fork的存储库(请参见下面的屏幕片段)。

Go:为什么结构 "instantiated"与其他类型不同?

在golang中,结构的实例化不同于“常规”类型:如果是常规类型:MyFloat(2)如果它是一个结构:MyFloat{2}这有什么特别的原因吗?packagemainimport("fmt")typeMyFloatfloat64typeMyFloat2struct{Xfloat64}funcmain(){f1:=MyFloat(2)f2:=MyFloat2{3}fmt.Println(f1)fmt.Println(f2)} 最佳答案 MyFloat(2)是一个conversion.MyFloat2{3}是一个compositeli

go - 是否可以在 Go 中将结构作为参数传递?

我正在尝试将一组键、值传递给Go中的另一个函数。对Go很陌生,所以我正在努力弄清楚。packagemainimport("net/http""fmt""io/ioutil""net/url")typeParamsstruct{items[]KeyValue}typeKeyValuestruct{keystringvaluestring}funcmain(){data:=[]Params{KeyValue{key:"title",value:"Thingy"},KeyValue{key:"body",value:"Testing123"}}response,error:=makePost