如何将Golang数组slice转为逗号分隔的string字符串

 更新时间:2023年09月28日 15:34:17   作者:加拉萨假期  
这篇文章主要介绍了如何将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)
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 利用golang的字符串解决leetcode翻转字符串里的单词

    利用golang的字符串解决leetcode翻转字符串里的单词

    这篇文章主要介绍了利用golang的字符串解决leetcode翻转字符串里的单词,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang 串口通信的实现示例

    Golang 串口通信的实现示例

    串口通信是一种常见的硬件通信方式,用于在计算机和外部设备之间传输数据,本文主要介绍了Golang 串口通信的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 解决golang json解析出现值为空的问题

    解决golang json解析出现值为空的问题

    这篇文章主要介绍了解决golang json解析出现值为空的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 一文详解Go语言中切片的底层原理

    一文详解Go语言中切片的底层原理

    在Go语言中,切片作为一种引用类型数据,相对数组而言是一种动态长度的数据类型,使用的场景也是非常多,所以本文主要来和大家聊聊切片的底层原理,需要的可以参考一下
    2023-06-06
  • Redis BloomFilter布隆过滤器原理与实现

    Redis BloomFilter布隆过滤器原理与实现

    你在开发或者面试过程中,有没有遇到过 海量数据需要查重,缓存穿透怎么避免等等这样的问题呢?下面这个东西超棒,好好了解下,面试过关斩将,凸显你的不一样
    2022-10-10
  • Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据的思路详解

    Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据的思路详解

    Stream 的实现思想就是将数据处理流程抽象成了一个数据流,每次加工后返回一个新的流供使用。这篇文章主要介绍了Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据,需要的朋友可以参考下
    2022-01-01
  • 解决Golang中goroutine执行速度的问题

    解决Golang中goroutine执行速度的问题

    这篇文章主要介绍了解决Golang中goroutine执行速度的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • Windows下CMD执行Go出现中文乱码的解决方法

    Windows下CMD执行Go出现中文乱码的解决方法

    本文主要介绍了Windows下CMD执行Go出现中文乱码的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Go语言扩展原语之Semaphore的用法详解

    Go语言扩展原语之Semaphore的用法详解

    Go语言的扩展包中提供了带权重的信号量 semaphore.Weighted,让我们可以按照不同的权重管理资源的访问,下面小编就来和大家聊聊它们的具体用法吧
    2023-07-07
  • golang中两个协程交替打印数字和字母的实现

    golang中两个协程交替打印数字和字母的实现

    这篇文章给大家介绍了golang中两个协程交替打印数字和字母的实现,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-01-01

最新评论