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语言中闭包的定义与使用

    闭包是编程语言中的一个重要概念,它允许函数不仅仅是独立的代码块,还可以携带数据和状态,本文将深入探讨闭包的定义、用途和注意事项,以及如何正确使用闭包,有需要的可以参考下
    2023-09-09
  • 详解Go语言如何对数据库进行CRUD操作

    详解Go语言如何对数据库进行CRUD操作

    在这篇文章中,主要带大家来学习一下在Go语言中如何对数据库进行CRUD操作,从而探讨一下Go的接口编程,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-05-05
  • Golang定制化zap日志库使用过程分析

    Golang定制化zap日志库使用过程分析

    Zap是我个人比较喜欢的日志库,是uber开源的,有较好的性能,在项目开发中,经常需要把程序运行过程中各种信息记录下来,有了详细的日志有助于问题排查和功能优化,但如何选择和使用性能好功能强大的日志库,这个就需要我们从多角度考虑
    2023-03-03
  • Go语言通道之无缓冲通道与缓冲通道详解

    Go语言通道之无缓冲通道与缓冲通道详解

    通道是一种特殊的数据结构,可以在协程之间进行传递数据,从而实现协程之间的通信和同步,本文就来和大家讲讲Go语言通道中的无缓冲通道与缓冲通道吧
    2023-06-06
  • Golang极简入门教程(四):编写第一个项目

    Golang极简入门教程(四):编写第一个项目

    这篇文章主要介绍了Golang极简入门教程(四):编写第一个项目,本文讲解了workspace、包路径、第一个可执行命令等内容,需要的朋友可以参考下
    2014-10-10
  • 一文详解Go语言中切片的底层原理

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

    在Go语言中,切片作为一种引用类型数据,相对数组而言是一种动态长度的数据类型,使用的场景也是非常多,所以本文主要来和大家聊聊切片的底层原理,需要的可以参考一下
    2023-06-06
  • 解决golang内存溢出的方法

    解决golang内存溢出的方法

    这篇文章主要介绍了解决golang内存溢出的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Go routine使用方法讲解

    Go routine使用方法讲解

    goroutine是Go语言提供的语言级别的轻量级线程,在我们需要使用并发时,我们只需要通过go关键字来开启goroutine即可。这篇文章主要介绍了GoLang并发机制goroutine原理,感兴趣的可以了解一下
    2023-01-01
  • Golang中定时器的陷阱详解

    Golang中定时器的陷阱详解

    这篇文章主要给大家介绍了关于Golang中定时器陷阱的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用golang具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • Go http client 连接池不复用的问题

    Go http client 连接池不复用的问题

    这篇文章主要介绍了Go http client 连接池不复用的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论