草庐IT

string - Go - 比较用户输入的字符串/字节 slice

我正在从用户那里获取输入,但是当我稍后尝试将其与字符串文字进行比较时,它不起作用。不过,这只是一个测试。我想对其进行设置,以便在输入空白行时(只需按下回车/返回键)程序退出。我不明白为什么字符串不进行比较,因为当我打印它时,结果是一样的。in:=bufio.NewReader(os.Stdin);input,err:=in.ReadBytes('\n');iferr!=nil{fmt.Println("Error:",err)}ifstring(input)=="example"{os.Exit(0)} 最佳答案 字符串与[]字节s

pointers - 通过引用传递自定义 slice 类型

我无法理解指针、slice和接口(interface)在Go中的交互方式。这是我目前编写的代码:typeLoaderinterface{Load(string,string)}typeFoostruct{a,bstring}typeFooList[]Foofunc(lFooList)Load(a,bstring){l=append(l,Foo{a,b})//lcontains1Foohere}funcLoad(listLoader){list.Load("1","2")//listisstillnilhere}鉴于此设置,然后我尝试执行以下操作:varlistFooListLoad(l

go - 从 slice 转换为数组?

我想知道是否有办法将适当大小的slice传递给需要数组的函数?例如,是否有理由不允许我执行以下操作?funcp(arr[4]int){for_,v:=rangearr{fmt.Print(v)}}funcmain(){data:=make([]int,10)fori,_:=rangedata{data[i]=i}p(data[0:4])//error}我知道我可以创建一个副本:arr:=[4]int{}copy(arr[:],data)p(arr)但这不就是创建了一个不必要的副本吗?(因为我猜测arr的另一个副本必须在堆栈上制作) 最佳答案

go - 类型结构访问索引的 slice 超出范围

我正在尝试使用结构类型的slice。看下面的例子packagemainimport("fmt")funcmain(){arr:=[]struct{AstringBstring}{}arr[0].A="Iam"arr[0].B="First"arr[1].A="Iam"arr[1].B="Second"fmt.Println(arr)}当我编译这段代码时,出现了超出范围的错误。为什么? 最佳答案 您需要将新元素附加到您的slice(如果您没有像FUZxxl的answer那样创建数组。使用命名类型而不是类型文字更容易。参见“Append

Go:使用 html/template 在新行上打印 slice 中的每个元素

如何在新行上打印“apple”、“orange”和“pear”?开始:consttitlepage=`{{.Title}}{{range$i:=.Body}}{{$i}}{{end}}`typetpstruct{TitlestringBody[]string}funcRead()([]string){a:=[]string{"apple","orange","pear"}returna}funcmain(){as:=tp{Title:"Hello",Body:Read()}t:=template.Must(template.New("Tele").Parse(titlepage))t.

json - 在不使用结构的情况下将 json 转换为 map slice 并将 map slice 转换为 json

我正在尝试将json字符串从http请求转换为一片map。而且我还应该将一片map/s转换为json字符串以用于http响应。在以下两种情况下,我想将以下内容转换为一片map。来自http请求的json字符串可能是几个相同键值json对象的数组,比如;[{title:'JavaScript:TheGoodParts',author:'DouglasCrockford',releaseDate:'2008',keywords:'JavaScriptProgramming'},{title:'TheLittleBookonCoffeeScript',author:'AlexMacCaw',

string - slice 无法转换为字符串

func(this*AdminModel)Login(v_namestring,v_pwdstring)(bool,error,uint){o:=orm.NewOrm()v_pwd_encrypt_byte:=md5.Sum([]byte(v_pwd))v_pwd_encrypt:=string(v_pwd_encrypt_byte[:])t_admin:=Admin{Name:v_name,Pwd:v_pwd_encrypt}fmt.Printf("username:%vpassword:%v\n",v_name,v_pwd_encrypt_byte)fmt.Printf("user

arrays - golang 中的 0 长度 slice 和数组

试图弄清楚长度为0的数组和slice在Golang中的行为方式。提出了两个代码片段(我在某处找到了代码并对其进行了一些修改以使用它)https://play.golang.org/p/ew2YYgvpGChttps://play.golang.org/p/jm2p6L6WCG从网站上得知nil数组([]int(nil))的指针值为nil,于是决定测试一下。果然如此。我只是对制作和slice数组感到困惑。它有我意想不到的行为。这两个人的行为我真的很困惑。第一个在我的电脑和Playground上运行良好。我注意到第一个和最后一个数组的地址总是完全相同?为什么?这是为什么?第二个更奇怪。这与

go - 如何在golang中更改指针 slice

我正在努力更好地理解围棋。我为自己创建了一个小练习:将指针slice传递给函数并对其进行修改。这是我想出的:packagemainimport("fmt""unsafe")funcmain(){vardata*[]bytefillData(data)fmt.Println((*data)[0:5])}funcfillData(data*[]byte){b:=[]byte("hello")fmt.Println(b[0:5])fmt.Println(string(b[0:5]))data=(*[]byte)(unsafe.Pointer(&b[0]))}但它给出了一个无效的内存地址或零指

go - slice 索引超出范围但有一个空间可用

我想弄清楚slice大小调整是如何工作的,我有以下示例:packagemainimport("fmt")funcmain(){s:=[]byte{'A','W','T','Q','X'}b:=s[2:4]fmt.Println(s,len(s),cap(s))fmt.Println(string(b),len(b),cap(b))b[1]='H'b[2]='V'fmt.Println(string(b))}编译器提示:panic:runtimeerror:indexoutofrangeb的容量为3,为什么我不能像那样赋值b[2]='V' 最佳答案