草庐IT

slice_size

全部标签

pointers - 修改取消引用的结构指针会更改大多数结构值,但不会更改 slice

我正在尝试创建structBoard(棋盘)的浅拷贝。在将移动保存到棋盘之前,我需要检查该移动是否使移动器处于检查状态。为此,在Move方法(指针方法)中,我取消引用指针,更新并检查这个可能板检查。当我更改Board类型的单个值(例如possible.headers="PossibleVarient")的值时,原始bBoard不会更改。但是在这里,当我调用方法updateBoard()时,它会更新两个板。我仍然收到错误(无法进入检查),但主线程认为b.board(棋盘位置)已更改。func(b*Board)Move(orig,destint)error{//validation.../

arrays - 无法使用 Golang 交换二维数组 slice 的元素

我正在尝试编写一个简单的函数来转置方阵(即交换列和行)。这是有问题的功能:funcTranspose(a[][]bool){fori:=0;i好像不行。如果我运行这个函数funcTestTranspose(t*testing.T){a:=make([][]bool,3)a[0]=[]bool{true,true,true}a[1]=[]bool{false,true,false}a[2]=[]bool{true,true,true}fmt.Println(BoolArrayViz(a))Transpose(a)fmt.Println(BoolArrayViz(a))}它给出以下输出(B

go - 如何将新元素附加到 slice ?

我试图将一个新元素追加到一个slice中,就像在Python中将一个新元素追加到一个list中一样,但是出现错误packagemainimport"fmt"funcmain(){s:=[]int{2,3,5,7,11,13}printSlice(s)s[len(s)]=100printSlice(s)}funcprintSlice(s[]int){fmt.Printf("%v\n",s)}输出是[23571113]panic:runtimeerror:indexoutofrange我怎样才能将新元素附加到slice?Go中的slice是Python中list最接近的数据类型是否正确?谢

arrays - 比较两个 slice 并删除 Golang 中的唯一值

我有这个,但它不能正常工作:variintvarnames=[]string{"F5","F7","C6","H5","G5"}varboard=[]string{"B4","D4","G5","F5","F7","C6"}fori=0;i 最佳答案 您正在内部for循环中更新names。但是,您的内部循环在逻辑上也是不正确的。board中的第一个值不等于names中的值将清空names。这也会导致indexoutofrange错误。你可以尝试这样的事情:varnames=[]string{"F5","F7","C6","H5","

go - 如何在Golang中通过引用传递具有值类型接口(interface)的 map slice

我要通过[]map[string]interface{}通过引用一个函数。这是我的尝试。packagemainimport"fmt"funcmain(){b:=map[string]int{"foo":1,"bar":2}a:=[...]map[string]int{b}fmt.Println(a)editit(a)fmt.Println(a)}funceditit(ainterface{}){fmt.Println(a)b:=map[string]int{"foo":3,"bar":4}a=[...]map[string]int{b}fmt.Println(a)}https://pl

google-app-engine - AppEngine 数据存储区 : byte slice vs datastore. 字节串

我需要一个具有短字节序列的属性,但我不需要该属性的索引。datastore.ByteString属性类型适用于较短的字节序列并已编制索引,而普通[]byte属性适用于较长的字节序列并且不是已编入索引。我不得不使用[]byte因为我不需要索引并且它会节省我额外的写入成本但是我使用datastore更好吗?ByteString因为它是短值?这样做有什么好处吗? 最佳答案 类型datastore.ByteString实际上只是一个普通的[]byteslice,看它的声明:typeByteString[]byte不同之处在于,如果您拥有By

go - 如何 reflect.New slice 并将其 reflect.AppendSlice 到源 slice

我想reflect.New一个[]interface{},比如[]int,并将它追加到另一个slice中。我的代码肯定有错误,但我不知道如何改正,也不知道如何深入理解reflect.New和reflect.AppendSlice的用法。packagemainimport("fmt""reflect")funcmain(){vara[]intvarvaluereflect.Value=reflect.ValueOf(&a)if!value.CanSet(){fmt.Println("gohere",value.CanSet())value=value.Elem()fmt.Println(

go - 如何将结构 slice 转换为字符串 slice ?

这里是新的go用户。我有一部分这个结构对象:typeTagRowstruct{Tag1stringTag2stringTag3string}产生的slice如下:[{abc}{def}{gh}]我想知道如何将生成的slice转换为字符串slice,例如:["a""b""c""d""e""f""g""h"]我试着像这样迭代:for_,row:=rangetagRows{for_,t:=rangerow{fmt.Println("tagis",t)}但是我得到:cannotrangeoverrow(typeTagRow)非常感谢您的帮助。 最佳答案

Golang slice 追加

我在使用Golang附加到我的slice时遇到问题。这是我的代码:funcMatchBeaconWithXY(whttp.ResponseWriter,r*http.Request)([]types.BeaconDataXY,error){context:=appengine.NewContext(r)returnBeaconData:=[]types.BeaconDataXY{}beacondata,err:=GetBeaconData(w,r)iferr!=nil{log.Errorf(context,"errorgettingbeacondata%v",err)w.WriteHe

go - 如何将结构 slice 作为指向函数的指针传递并修改它?

我有一段结构[]student,我想用函数修改它的内容。typestudentstruct{namestringageint}students:=[]student{{"Doraemon",30},{"KingKong",25},}因此,我决定将其作为指针传递。我可以知道如何将slice作为函数的引用传递吗?funcaddAge(s*[]student)error{//thiscodehaserror//everyoneadd2yearsoldfori,e:=range*s{s[i].age=s[i].age+2}//makethefirststudentmucholders[0].a