go语言字符串的拼接和切片方法总结

 更新时间:2022年11月30日 09:43:55   作者:谦虚且进步  
在go语言中,因为字符串只能被访问,不能被修改,所以进行字符串拼接的时候,golang都需要进行内存拷贝,造成一定的性能消耗,这篇文章主要给大家介绍了关于go语言字符串的拼接和切片的相关资料,需要的朋友可以参考下

一,go字符串的本质

go语言字符串的本质就是byte[]数组,里面每一个数据存的是字符的Unicode码。

二,字符串拼接的几种方法

1,使用+号拼接字符串

拼接之后返回一个新的字符串。

package main
 
import "fmt"
 
func main() {
	str1 := "go"
	str2 := "语言"
	re := str1 + str2
	fmt.Println(re)
}

2,使用fmt包的Sprintf()函数

对字符串使用格式化输出的形式来拼接字符串。返回一个拼接之后的字符串对象。

package main
 
import "fmt"
 
func main() {
	str1 := "go"
	str2 := "语言"
	re := fmt.Sprintf("%s%s", str1, str2)
	fmt.Println(re)
}

3,使用strings包的Join()函数

package main
 
import (
	"fmt"
	"strings"
)
 
func main() {
	str1 := "go"
	str2 := "语言"
	re := strings.Join([]string{str1, str2}, "")
	fmt.Println(re)
}

4,使用bytes.Buffer储存字符串再打印输出

package main
 
import (
	"bytes"
	"fmt"
)
 
func main() {
	str1 := "go"
	str2 := "语言"
	var buffer bytes.Buffer  //声明一个buffer变量
	buffer.WriteString(str1)
	buffer.WriteString(str2)
	fmt.Printf("buffer.String(): %v\n", buffer.String())
}

这种方式最常用。因为它将字符串变为可变,内存消耗小。

三,字符串的切片

切片很好理解,[m:n]截取从m至n-1间的字符,如果缺省,则表示头或者尾。[:]表示整个字符串。[0]表示第一个字符。

四,字符串函数

附:golang将整型切片转换为字符串

在python中,将list转换为str,使用str.join即可,但在golang中,strings.join要求是一个字符串类型的序列,所以可以先将序列格式化成字符串,然后替换其中的空格,再去掉收尾的[]即可。

package main

import "fmt"

func Int2Str() {
    a := []int{1, 2, 3, 4, 5}
    fmt.Println(strings.Trim(strings.Replace(fmt.Sprint(a), " ", ",", -1), "[]"))	// 1,2,3,4,5
}

func main() {
	Int2Str()
}

总结

到此这篇关于go语言字符串的拼接和切片的文章就介绍到这了,更多相关go语言字符串拼接与切片内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 简单聊一聊Go语言中的数组和切片

    简单聊一聊Go语言中的数组和切片

    数组和切片由于语法十分相似,在使用中容易混淆,要认真区分,下面这篇文章主要给大家介绍了关于Go语言中数组和切片的相关资料,需要的朋友可以参考下
    2021-07-07
  • Go项目分层下的最佳error处理方式分享

    Go项目分层下的最佳error处理方式分享

    这篇文章主要来和大家一起探讨 Go 项目分层下的最佳 error 处理方式,准备好了吗?准备一杯你最喜欢的饮料或茶,随着本文一探究竟吧
    2023-06-06
  • Go语言开发技巧必知的小细节提升效率

    Go语言开发技巧必知的小细节提升效率

    这篇文章主要介绍了Go语言开发技巧必知的小细节提升效率,分享几个你可能不知道的Go语言小细节,希望能帮助大家更好地学习这门语言
    2024-01-01
  • 看看你的Go应用是否用了正确CPU核数

    看看你的Go应用是否用了正确CPU核数

    这篇文章主要为大家介绍了Go应用正确的CPU核数分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-06-06
  • Golang实现Directional Channel(定向通道)

    Golang实现Directional Channel(定向通道)

    这篇文章主要介绍了Golang实现Directional Channel(定向通道),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Go语言对字符串进行SHA1哈希运算的方法

    Go语言对字符串进行SHA1哈希运算的方法

    这篇文章主要介绍了Go语言对字符串进行SHA1哈希运算的方法,实例分析了Go语言针对字符串操作的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • Golang实现优雅的将struct转换为map

    Golang实现优雅的将struct转换为map

    在项目实践中,有时候我们需要将struct结构体转为map映射表,然后基于map做数据裁剪或操作。那么下面我来介绍下常用的两种转换方式,希望对大家有所帮助
    2023-01-01
  • Golang sync.Pool的源码解析

    Golang sync.Pool的源码解析

    Pool是用于存放临时对象的集合,这些对象是为了后续的使用,以达到复用对象的效果,本文将详解解析sync.Pool 源码,需要的朋友可以参考下
    2023-05-05
  • beego获取ajax数据的实例

    beego获取ajax数据的实例

    下面小编就为大家分享一篇beego获取ajax数据的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • go语言题解LeetCode66加一示例详解

    go语言题解LeetCode66加一示例详解

    这篇文章主要为大家介绍了go语言题解LeetCode66加一示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12

最新评论