如何将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"画出内存示意图

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

3)string是不可变的,也就是说不能通过 str[0]='z'方式来修改字符串

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

 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)
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持恩蓝小号。

原创文章,作者:ORKRH,如若转载,请注明出处:http://www.wangzhanshi.com/n/6125.html

(0)
ORKRH的头像ORKRH
上一篇 2024年12月29日 12:46:17
下一篇 2024年12月29日 12:46:24

相关推荐

  • go mod tidy命令的使用

    go mod tidy 是 Go 语言的命令,用于清理和更新 go.mod 和 go.sum 文件。它主要有以下功能: 移除未使用…

    Golang 2024年12月17日
  • 如何使用Go检测用户本地是否安装chrome

    前言 起因,是因为我之前做过用 go 直接开启浏览器服务,然后在昨天遇到了一位大佬的业务,大佬使用 python 做了一个脚本,并打包成 exe 文件,让我帮其测试,但是在我电脑上…

    Golang 2024年12月17日
  • 浅析Go语言中的逃逸分析

    逃逸分析算是go语言的特色之一,编译器自动分析变量/内存应该分配在栈上还是堆上,程序员不需要主动关心这些事情,保证了内存安全的同时也减轻了程序员的负担。 然而这个“减轻…

    Golang 2024年12月17日
  • golang gin ShouldBind的介绍和使用示例详解

    在 Go 语言的 Gin 框架中,ShouldBind 是用于将请求中的数据绑定到结构体的一个方法。它简化了从请求中提取参数的过程,支持多种数据格式(如 JSON、表单、查询参数等…

    Golang 2024年12月17日
  • golang切片初始化的使用示例

    切片的初始化方法很多,可以直接初始化,也可以使用数组初始化等。 切片如何切分 package main import “fmt” // 切片 func test1() { var …

    Golang 2024年12月17日
  • go集成gorm数据库的操作代码

    一、什么是gorm GORM 是一个用于 Go 语言的 ORM(对象关系映射)库,它提供了一种简单而强大的方式来与数据库进行交互。GORM 支持多种数据库,包括 MySQL、Pos…

    Golang 2024年12月17日
  • golang套接字的实现

    在 Go 语言中,使用标准库 net 来实现套接字编程。以下是有关 Go 套接字的基本概念和示例。 1. 基本概念 网络类型: TCP:流套接字,提供可靠的、面…

    Golang 2024年12月17日
  • golang中单向channel的语法介绍

    本文主要给大家介绍的是关于golang单向channel语法的相关内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍: 今天闲来无事补充一下golang的语法知识,想…

    Golang 2024年12月26日
  • golang通用的grpc http基础开发框架使用快速入门

    go-moda golang 通用的 grpc http 基础开发框架 仓库地址: [https://github.com/webws/go-moda] 仓库一直在更新,欢迎大家吐…

    2024年12月29日
  • Golang调用FFmpeg转换视频流的实现

    问题背景 问题背景是在,由于视频采集端使用的是H264编码采集的裸流,而网络流媒体大多是以FLV为主的直播方式进行的,为了实现实时直播,当前是打算直接使用FFmpeg将H264裸流…

    Golang 2024年12月29日

发表回复

登录后才能评论