草庐IT

string_slice

全部标签

go - 使用 reflect 遍历 go struct 字段与 case map[string]interface{} 不匹配

我有一个不寻常的任务:1.将json消息解析为Gostruct2.验证JSON中的所有字段是否在特定限制内:-字符串字段长度不再固定不变-map包含的元素不超过固定数量-如果映射键的值是嵌套结构,则验证以上2条规则为此,我使用反射,然后遍历元素,并进行类型检查:-如果是int或float-无事可做-无验证-如果是字符串-验证长度(如果失败则返回)-如果map验证map长度(如果失败则返回),然后迭代map值并递归检查它们的字段是否违反string/map规则-默认(我假设这是struct嵌套的JSON结构):将其转换为接口(interface)slice并进行递归调用。问题:在JSON

string - Golang 将字符串拆分并解析为不同的类型

我不确定我的方法是否正确,或者它是否过于骇人听闻。有没有办法改进这段代码?funcsplitStatValues(datastring)(uint16,uint16,uint16,uint16,uint16,uint16,uint16,uint32,uint32){vals:=strings.SplitN(data,",",9)varlv,str,agi,stm,spr,wis,conuint16varki,expuint32for_,s:=rangevals{xe:=strings.SplitN(s,":",2)ifxe[0]=="Lv"{_lv,_:=strconv.ParseUi

go - 为什么调用者看不到 slice 中的新数据?

这个问题在这里已经有了答案:Golangappendanitemtoaslice(14个答案)关闭6年前。在下面的代码中,为什么fmt.Println(len(people))都打印0?正如这里指出的那样,https://stackoverflow.com/a/2441112/315445,而在其他地方,slice是引用类型。为什么调用者(主)看不到更新的数据?packagemainimport"fmt"typePersonstruct{namestringagestring}funcmain(){varpeople=make([]Person,0)fmt.Println(len(pe

go - string() 做了我希望 strconv.Itoa() 会做的事情

我有一个简短的程序,可以将一些二进制数转换成它们的ASCII等价物。我试着把它翻译成go今天发现strconv.Itoa()没有像我预期的那样工作。//translateComputerHistoryMuseumt-shirt//http://i.ebayimg.com/images/g/qksAAOSwaB5XjsI1/s-l300.jpgpackagemainimport("fmt""strconv")funcmain(){varbinaryStrings[3]stringbinaryStrings=[3]string{"01000011","01001000","01001101

go - 将 map[string]SpecificType 与 map[string]SomeInterface 方法一起使用

我得到cannotusemap[string]MyTypeliteral(typemap[string]MyType)astypemap[string]IterableWithIDinargumenttoMapToList使用下面的代码,我如何传递一个具体映射类型到需要接口(interface)类型的方法?https://play.golang.org/p/G7VzMwrRRw 最佳答案 Go的接口(interface)约定与Java中的接口(interface)约定不太一样(而且设计者显然不太喜欢getter和setter的想法:

Golang return map[string]interface{} 返回变量结构

我需要一个大的结构表,我需要处理返回的结构。packagemainimport("fmt")varfactorymap[string]interface{}=map[string]interface{}{"Date":Date{},"DateTime":DateTime{},}typeDatestruct{yearint//xsd:intYear(e.g.,2009)monthint//xsd:intMonth(1..12)dayint//xsd:intDaynumber}func(d*Date)Init(){d.year=2009d.month=1d.day=1}typeDateTi

go - 如何在 Go 中创建不固定长度的 slice

我是Go的新手,我有2个问题:1假设我们有一个用C#编写的简单for循环:staticvoidMain(string[]args){Listlist=newList();for(inti=1;i如果我想在Go中做同样的事情,我将不得不使用slice。但是怎么做呢?哪种变量声明形式更常用:短格式(s:=3)要么长(varsint=3)? 最佳答案 在Go中数组有它们的位置,但它们有点不灵活,所以你不会经常在Go代码中看到它们。不过,slice无处不在。它们以阵列为基础,提供强大的功能和便利性。slice不是固定长度的。它很灵活。你可以

go - 如何将值推送到嵌套的 map[string]interface{} slice 中?

这是一个例子:https://play.golang.org/p/aQXJzH6Yjoi:=make(map[string]interface{})i["some"]=[]interface{}{[]interface{}{1,2,"3--"},map[string]interface{}{"value":"some",},}如何将附加值推送到[]interface{}{1,2,"3--"}slice?我基本上需要创建将转换为json的任意数据结构。调查了https://github.com/Jeffail/gabs,但它似乎不允许创建嵌套数组 最佳答案

string - 如何取消转义 Golang 中引用的八进制字符串?

我有以下字符串:`\303\250\303\252\303\256\303\264\303\247`我需要把它转换成"èêîôç"我该怎么做?谢谢 最佳答案 好的,我知道了a:=`"\303\250\303\252\303\256\303\264\303\247"`b,err:=strconv.Unquote(a) 关于string-如何取消转义Golang中引用的八进制字符串?,我们在StackOverflow上找到一个类似的问题: https://stac

string - Go中字符串变量的连接速度

我在这个网站上看到一个关于字符串连接速度的问题。在那个主题中,人们写了一些带有奇怪数字的短暂基准。HowtoefficientlyconcatenatestringsinGo?我决定检查这些速度并编写测试。我的测试显示了其他结果。在大尺寸上,“+”运算符比其他方法更快。是吗?这是我的代码。packagemainimport("bytes""fmt""runtime/debug""time")constvariations=30vartime1,time2time.Timevardelta,catcherstringvarx,deltaSize,k,dataSize,operations