草庐IT

arrays - 如何将 slice 转换为固定大小的数组?

这个问题在这里已经有了答案:Howdoyouconvertasliceintoanarray?(7个回答)关闭1年前。我想从一个slice转换一个固定大小的数组:funcgen(bricks[]Brick){iflen(bricks)==16{ifcheck(Sculpture{bricks}){varb[16]Brick=bricks[0:16];}}}但这会导致:cannotusebricks[0:16](type[]Brick)astype[16]Brickinassignment如何将slice转换为固定大小的数组? 最佳答案

string - 为什么我不能按照指定的 Go 引用将字符串附加到字节 slice ?

引自referenceofappendofGoAsaspecialcase,itislegaltoappendastringtoabyteslice,likethis:slice=append([]byte("hello"),"world"...)但我发现我不能这样做:packagemainimport"fmt"funcmain(){a:=[]byte("hello")s:="world"a=append(a,s)//*Error*:can'tuses(typestring)astypebyteinappendfmt.Printf("%s",a)}我做错了什么?

go - 如何找到两个字符串 slice 之间的差异

这是我想要的结果slice1:=[]string{"foo","bar","hello"}slice2:=[]string{"foo","bar"}difference(slice1,slice2)=>["hello"]我正在寻找两个字符串slice之间的区别! 最佳答案 假设Gomap是~O(1),这是一个适用于未排序slice的~O(n)差分函数。//differencereturnstheelementsin`a`thataren'tin`b`.funcdifference(a,b[]string)[]string{mb:=m

go - slice 作为 map 中的键

是否可以使用slice作为键?这是我的尝试:h:=map[[]string]string{[]string{"a","b"}:"ab",}编译器给了我一个错误invalidmapkeytype[]string。所以要么不可能,要么我声明不正确(如果是这样,正确的方法是什么?)。 最佳答案 但是,它是possible使用数组作为映射键:packagemainimport"fmt"funcmain(){m:=make(map[[2]int]bool)m[[2]int{1,2}]=falsefmt.Printf("%v",m)}

go - 如何检查 slice 是否在 Go 中具有给定索引?

我们可以通过map轻松做到这一点:item,ok:=myMap["index"]但不是slice:item,ok:=mySlice[3]//panic!很惊讶以前没有人问过这个问题。也许我对Goslice的心智模型有误? 最佳答案 Go中没有稀疏slice,因此您可以简单地检查长度:iflen(mySlice)>3{//...}如果长度大于3,则知道索引3及其之前的所有索引都存在。 关于go-如何检查slice是否在Go中具有给定索引?,我们在StackOverflow上找到一个类似的问

Golang 无法覆盖指向 slice 的指针

尝试在slice指针上进行范围时,我不断收到此错误。app/domain/repositories/class_repository.go:24:cannotrangeoverclasses(type*[]entities.Class)我做错了什么?这是结构:packagerepositoriesimport("mobifit/app/domain/entities")typeClassRepositorystruct{*Repository}func(c*ClassRepository)ClassesForLastNDays(daysint)*[]entities.Class{cla

go - 如何从 slice 中删除最后一个元素?

我看到有人说只是通过附加旧slice来创建一个新slice*slc=append(*slc[:item],*slc[item+1:]...)但是如果你想删除slice中的最后一个元素呢?如果您尝试用i+1替换i(最后一个元素),它会返回一个超出范围的错误,因为没有i+1. 最佳答案 您可以使用len()查找长度并使用最后一个元素之前的索引重新slice:iflen(slice)>0{slice=slice[:len(slice)-1]}Clickheretoseeitintheplayground

go - golang中 slice 的cap vs len

golang中slice的cap和len有什么区别?根据定义:slice既有长度又有容量。slice的长度是它包含的元素数。slice的容量是底层数组中元素的数量,从slice中的第一个元素开始计数。x:=make([]int,0,5)//len(b)=0,cap(b)=5len是否仅表示非空值? 最佳答案 slice是在底层使用数组的抽象。cap告诉你底层数组的容量。len告诉你数组中有多少项。Go中的slice抽象非常好,因为它会为您调整底层数组的大小,而且在Go中数组无法调整大小,因此几乎总是使用slice来代替。例子:s:=

set - 检查字符串 slice 是否包含 Go 中的某个值

检查某个值是否在字符串slice中的最佳方法是什么?我会使用其他语言的Set,但Go没有。到目前为止,我最好的尝试是:packagemainimport"fmt"funcmain(){list:=[]string{"a","b","x"}fmt.Println(isValueInList("b",list))fmt.Println(isValueInList("z",list))}funcisValueInList(valuestring,list[]string)bool{for_,v:=rangelist{ifv==value{returntrue}}returnfalse}htt

Go - 追加到结构中的 slice

我正在尝试实现2个简单的结构,如下所示:packagemainimport("fmt")typeMyBoxItemstruct{Namestring}typeMyBoxstruct{Items[]MyBoxItem}func(box*MyBox)AddItem(itemMyBoxItem)[]MyBoxItem{returnappend(box.Items,item)}funcmain(){item1:=MyBoxItem{Name:"TestItem1"}item2:=MyBoxItem{Name:"TestItem2"}items:=[]MyBoxItem{}box:=MyBox{