草庐IT

slice_size

全部标签

arrays - slice 数组 - GO

1)对于下面的slice声明,vara[][3]string创建一个指向3个字符串数组的slice(a),len(a)=3和cap(a)=3但不是cap(a)>=3a=make([][3]string,5)创建5个slice,其中每个slice(比如a[0])指向3个字符串的数组,len(a[0])=3和cap(a[0])=32)对于slice声明,varb[][3][6]string创建一个单独的slice(b),它指向3个数组,每个数组包含6个字符串,其中len(b)=3和cap(b)=3b=make([][3][6]string,5)创建5个slice,其中每个slice(比如b

go - 如何将字符串 slice 转换为 rune slice

如何将[]string类型转换为[]rune?我知道你可以这样做:[]rune(strings.Join(array,""))但是有更好的方法吗? 最佳答案 我不想为此目的使用strings.Join(array,""),因为它构建了一个我不需要的大新字符串。制作一个我不需要的大字符串不节省空间,而且根据输入和硬件,它可能不节省时间。因此,我将遍历字符串值数组并将每个字符串转换为runeslice,并使用内置的可变附加函数来增加所有rune值的slice:varallRunes[]runefor_,str:=rangearray{a

go - 结构 slice 与结构指针 slice

我不明白以下code的行为.在创建匹配结构列表作为结构指针的一部分时,代码总是打印原始数组的最后一个元素(实际上不是匹配项)——它打印12和12。但是,如果我将匹配更改为[]Widget而不是[]*Widget,那么它将打印10和11。这是为什么?packagemainimport("fmt")funcmain(){typeWidgetstruct{idintattrs[]string}widgets:=[]Widget{Widget{id:10,attrs:[]string{"blah","foo"},},Widget{id:11,attrs:[]string{"foo","bar"

范围超过结构 slice 时的 Golang 内存地址问题

我是Go的新手,所以可能有一个非常简单的修复方法。我在调用数组中结构内的接口(interface)方法时遇到问题。我认为最好通过示例来解释这一点,因此这是我能够将代码归结为最基本的示例。packagemainimport"fmt"/*TestTypes*/typeTestinterface{Hello()string}typeTestRecordstruct{testTestnamestring}typeTestList[]TestRecord/*OtherType*/typeOtherstruct{}func(oOther)Hello()string{return"HelloFrom

struct - golang 2个 slice 类型,1个字段

鉴于golang不支持union,最好的实现方式是什么:typefoostruct{words[]stringnums[]int}这样一次只能使用words或nums。我试过的一件事是:typefoostruct{values[]interface{}}但我更喜欢将类型限制为所提到的两个或带有指针的东西。 最佳答案 使用foo包来隐藏实现。例如,packagefooconst(typeWords=iota+1typeNums)typeFoostruct{fooTypebytewords[]stringnums[]int}funcNe

对指针 slice 进行排序

考虑以下几点:typeItemstruct{TitlestringDatetime.Time}typeItems[]Itemfunc(sliceItems)Len()int{returnlen(slice)}func(sliceItems)Less(i,jint)bool{returnslice[i].Date.After(slice[j].Date)}func(sliceItems)Swap(i,jint){slice[i],slice[j]=slice[j],slice[i]}在main方法中,我有一段指向Item的指针,必须对其进行排序。我的尝试是:items:=make(Ite

go - 为什么追加修改传递的 slice

我如何遍历slice并将slice传递到除当前元素之外的某处?似乎append()函数修改了底层slice,正如我们在文档中看到的那样。但无论如何我仍然不知道如何达到这一点。funcmain(){args:=[]string{"2","3","8"}fori,_:=rangeargs{fmt.Println(append(args[:i],args[i+1:]...))//orpasstofunction}fmt.Println(args)}结果:[38][38][38][388]//itisargsnow我的期望:[38][28][23]我已经看过了Whydoesappend()mo

go - 如何在没有泛型的情况下从任何 slice 中删除元素?

这个问题在这里已经有了答案:HowtodeleteanelementfromaSliceinGolang(20个答案)关闭6个月前。我有一个函数removeFrom可以从slice中删除一个项目。它接受一个float64slice和一个索引:funcremoveFrom(slice[]float64,indexint)[]float64{iflen(slice)>index{returnappend(slice[:index],slice[index+1:]...)}}它工作正常,但现在我还必须从整数slice中删除。那么我该如何更改它以接受这两种类型(并返回给定类型的一部分)?我尝试

mongodb - Golang MongoDB 错误 : result argument must be a slice address

我有一个函数需要从mongoDB集合中检索所有用户,当我尝试通过REST端点调用它时会抛出错误。函数是:func(usercontrollerUserController)GetAllUsers(whttp.ResponseWriter,r*http.Request,phttprouter.Params){session:=usercontroller.session.Copy()defersession.Close()//Stubuserresult:=models.User{}//getallusersiferr:=session.DB("Auth").C("users").Fin

go - 将 URL.Query( slice 映射)转换为 struct golang

从标准库中直接映射会很棒URL.Query()到一个结构。Query()返回一个像这样的map:map[a:[aaaa]b:[bbbb]c:[cccc]]结构看起来像:typeThingstruct{AstringBstringCstring}我不知道为什么URL.Query会返回一个包含数组元素的映射。(好吧..我知道why但是GET不太可能有重复的参数) 最佳答案 请在下面找到直接在golang结构中解析获取查询参数然后将结构作为响应发回的完整示例packagemainimport("log""net/http""encodin