草庐IT

each_slice

全部标签

go - go中的二维 slice 类型转换

我不得不为[]string定义一个特定的类型,因为我为strSlice类型实现了一个自定义的yaml解析器。现在我需要将[]strSlice转换回[][]string但go编译器1.7.1拒绝它作为错误。typestrSlice[]stringvarx1[]strSlicevarx2[][]string...x2=[][]string(x1)如何执行转换操作? 最佳答案 您正在使用命名类型的字符串slice。您需要先将x1中的每个条目转换回[]string:typestrSlice[]stringvarx1[]strSlicevar

go - Go slice 索引符号背后的想法是什么?

在使用Goslice时,我似乎无法理解索引的符号。给定一个slices。s:=[]int{1,2,3,4,5}我现在想创建一个新slices2=[23]。s2:=s[1:3]//s2=[23]现在,访问这个值时我应该经过怎样的思考过程?我是否正在读取从索引1开始直到并包括slice的第三个元素的值?或者我是从索引1读取值直到并排除索引3?我不是从索引1开始到索引3也不是从位置1开始到位置3因为这两个都会导致s2有3个元素。这个符号背后的想法是什么? 最佳答案 规范中的相关部分:Sliceexpressions.Forastring,

arrays - 如何在golang中找到两个 slice 的截距结果

字符串类型有两个slice。我想从golang中的两个slice中找到集合中的拦截结果。我想找到最佳解决方案而不是迭代每个slice。first_slice:=[]string{"F8-E7-1E-14-AE-00","F8-E7-1E-14-D0-30","84-18-3A-2F-05-E0","84-18-3A-2F-05-E8"}second_slice:=[]string{"F8-E7-1E-14-D0-30","84-18-3A-2F-05-E8","F8-E7-1E-54-AE-08"}Output:result_slice:=[]string{"F8-E7-1E-14-D

golang influxdb 客户端对数组或 slice 的响应

我有一个通过Influxdb客户端查询Influxdb的go程序。函数查询数据库:https://github.com/influxdata/influxdb/tree/master/client#querying-data通过调用resp,err:=queryDB(c,"SELECTipFROMeventsWHEREtime>='2016-10-24T00:00:00Z'ANDtime当我这样做fmt.Printf("%s",resp)我得到了类似的东西[{[{eventsmap[][timeip][[2016-10-24T00:12:12.123456Z192.168.123.10

go - 使用 unsafe.Pointer 时 slice 超出范围

当我使用像b[1:2]这样从[]byte转换为字符串然后再转换回[]byte的语法来修剪字节数组时,我遇到了一个奇怪的panic。我的go版本是go1.7.3darwin/amd64。下面是详细代码。packagemainimport("reflect""unsafe""fmt")funcBytesToString(b[]byte)string{bh:=(*reflect.SliceHeader)(unsafe.Pointer(&b))sh:=reflect.StringHeader{bh.Data,bh.Len}return*(*string)(unsafe.Pointer(&sh)

GO: slice 独特的结构有效的可重用实现

我经常需要根据任意equals函数去除重复项。我需要实现:速度快且内存有效(不创建map)可重用且易于使用,想想slice.Sort()(github.com/bradfitz/slice)不需要保持原slice的顺序或保留原slice最好尽量减少复制这可以在go中实现吗?为什么这个函数不是我所知道的某些库的一部分?我正在寻找例如godash(github.com/zillow/godash)实现使用map并且不允许任意小于和等于。这是大致的样子。测试:import("reflect""testing")typeblastruct{IDstring}typeblas[]blafunc(

go - 为什么 Slices 在传递给 Go 中的函数时内部结构为 "passed by reference"?

packagemainimport"fmt"funcmain(){a:=SomeType{myslice:[]int{1,2,3},decimal:2.33}for_,i:=rangea.myslice{fmt.Println(i)}fmt.Println(a.decimal)addOne(a)for_,i:=rangea.myslice{fmt.Println(i)}fmt.Println(a.decimal)}typeSomeTypestruct{myslice[]intdecimalfloat32}funcaddOne(sSomeType){s.myslice[0]++s.dec

Golang slice append内置函数返回值

这段代码slice2的返回值为[[11][11]]。这让我感到困惑,因为我期待[[00][11]]。我不明白为什么返回[[11][11]]而不是[[00][11]]。如果有人能解释一下,我将不胜感激。谢谢。slice:=[]int{0,0}slice2:=[][]int{}fori:=rangeslice{slice[0]=islice[1]=islice2=append(slice2,slice)}fmt.Println(slice2)您可以查看此链接中的代码play.golang.org 最佳答案 Asliceisadescri

pointers - 在 Go 中修改结构中的结构 slice

在下面的示例中,person有一段friendship,我尝试将一个friendship初始化为指向另一个的指针person对象,但由于某种原因它失败了,结果是没有人有任何friendship。我没有在我应该在的地方使用指针吗?packagemainimport("fmt""math/rand")typefriendshipstruct{friend*person}typepersonstruct{nameintfriendship[]friendship}funccreatePerson(idint)person{returnperson{id,make([]friendship,0

pointers - 如何使用指向该 slice 的指针获取 slice 项

有一个整数slice和一个接受指向slice的指针作为参数的函数。mainSlice:=[]int{0,8,5,4,6,9,7,1,2,3,6,4,5,7}doSmthWithSlice(mainSlice)有没有什么方法可以使用指向slice的指针来获取slice项,但无需将指针指向的值复制到新slice中?funcdoSmthWithSlice(slcPtr*[]int){*slcPtr[3]=777//thisdoesNOTworks,because*[]intdoesnotsupportindexing//Don'twanttoimplementit//likethisnewS