如何将Golang数组slice转为逗号分隔的string字符串
作者:加拉萨假期
这篇文章主要介绍了如何将Golang数组slice转为逗号分隔的string字符串问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Golang数组slice转为逗号分隔的string字符串
如将:
var a = []int{1,2,3,4}变为"[1,2,3,4]"。
最硬核的办法就是建一个slice的临时中转:[]string 类型, 然后用strings.Join():
var src = []int{1,2,3,4} var temp = make([]string, len(src)) for k, v := range src { temp[k] = fmt.Sprintf("%d", v) } var result = "[" + strings.Join(temp, ",") + "]"
然后不久后想到了一个比较简便的方法json.Marshal():
var a = []int{1,2,3,4} b, err := json.Marshal(a) if err != nil { panic(err) } var result = string(b)
go数组或切片转为字符串问题
基本介绍
1)string底层是一个byte数组,因此string也可以进行切片处理,案例演示:
package main import ( "fmt" ) func main() { // 1. string底层是一个byte数组,因此string也可以进行切片处理 str := "tianwanggaidihu" // 使用切片获取到atguigu slice := str[6:] fmt.Println("slice=",slice) }
2)string和切片在内存的形式,以"abcd"画出内存示意图
3)string是不可变的,也就是说不能通过 str[0]='z'方式来修改字符串
4)如果需要修改字符串,可以先将string => []byte 或者 []rune => 修改 => 重写转成string
package main import ( "fmt" ) func main() { // 4. 如果需要修改字符串,可以先将string => []byte 或者 []rune => 修改 => 重写转成string // 转成byte可以处理英文和数字,但是不能处理中文 // 原因是 []byte 是一个字节,而一个汉字是 3个字节,因此会出现乱码 // 解决办法是将string 转成 []rune 即可,因为 []rune是按字符处理,兼容汉字 // 1)转成 []byte var str1 = "moerwubuhaha北京欢迎你" slice1 := []byte(str1) slice1[0] = 'z' slice1[len(slice1) - 1] = 'z' str1 = string(slice1) fmt.Println("使用[]byte处理string:",str1) // 2)转成 []rune var str2 = "您好啊shenmeniuma北京欢迎你,天安门欢迎您" slice2 := []rune(str2) slice2[0] = '牛' str2 = string(slice2) fmt.Println("使用[]rune处理string:",str2) }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。