golang拼接字符串的5种实现方式

 更新时间:2024年12月20日 09:56:01   作者:牛宝贝儿哦  
文章总结了五种拼接字符串的方式,包括使用 "+"、strings.Join()、fmt.Sprint、bytes.Buffer 和 strings.Builder,每种方式都有其适用场景和性能特点

拼接字符串的方式共5种

方式一:使用 “+”

字符串只能被访问,不能被修改。

所以在拼接字符串时,需要内存拷贝,会带来性能的消耗。

但是可读性强,适合少量字符串拼接

package main

import "fmt"

func main() {
	var (
		a          string = "一"
		b          string = "二"
		c          string = "三"
		stringJoin string
	)
	stringJoin = a + b + c
	fmt.Println("使用‘+'拼接字符串的结果为:", stringJoin)
}

方式二:使用 strings.Join()

适合字符串类型的切片拼接

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := []string{"a", "b", "c"}
	var strJoin string = strings.Join(str, ",")
	fmt.Println("使用strings.Join拼接字符串的结果为:", strJoin)
}

方式三:使用fmt.Sprint

可以拼接其他类型,但会涉及类型的转换,底层实现是[] byte字节切面

package main

import "fmt"

func main() {
	var (
		name string = "张三"
		age  int32  = 18
		str  string
	)
	str = fmt.Sprintf("姓名:%s,年龄:%d", name, age)
	str1 := fmt.Sprint(name, age)
	str2 := fmt.Sprintln(name, age)
	fmt.Println(str)
	fmt.Println(str1)
	fmt.Println(str2)
	// 结果:
	// 姓名:张三,年龄:18
	// 张三18
	// 张三 18
	//
}

方式四:使用bytes.Buffer

支持字符串,字符,unicode,但会涉及字符串和[] byte之间的转换,底层[] byte,性能一般,因为WtiteString方法使用的buffer太长,会导致panic,少量拼接可以使用

package main

import (
	"bytes"
	"fmt"
)

func main() {
	var (
		info bytes.Buffer
		str  string
	)
	info.WriteString("my")
	info.WriteString("name")
	info.WriteString("is")
	info.WriteString("Tom")
	str = info.String()
	fmt.Println("使用bytes.Buffer拼接结果为:", str)
	//结果:
	//使用bytes.Buffer拼接结果为: mynameisTom
}

方式五:使用strings.Builder

支持字符串,字符,unicode,使用unsafe。

Pointer优化了字符串和[] byte之间的转换,在字符串大量拼接的场景下建议使用

var (
		info strings.Builder
		str  string
	)
	info.WriteString("my")
	info.WriteString("name")
	info.WriteString("is")
	info.WriteString("Tom")
	str = info.String()
	fmt.Println("使用strings.Buffer拼接结果为:", str)
	//使用strings.Buffer拼接结果为: mynameisTom

总结

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

相关文章

  • 详细介绍Go语言之数组与切片

    详细介绍Go语言之数组与切片

    这篇文章介绍Go语言之数组与切片,数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可是任意的原始类型如整形、字符串或自定义类型。切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制,下面我们就来详细了解一下该内容
    2021-10-10
  • Go 如何使用原始套接字捕获网卡流量

    Go 如何使用原始套接字捕获网卡流量

    为了减少对环境的依赖可以使用原始套接字捕获网卡流量,然后使用 gopacket 的协议解析功能,这样就省去了解析这部分的工作量,正确性也可以得到保证,同时 CGO 也可以关闭,这篇文章主要介绍了Go 使用原始套接字捕获网卡流量,需要的朋友可以参考下
    2024-07-07
  • 深入分析Go 实现 MySQL 数据库事务

    深入分析Go 实现 MySQL 数据库事务

    本文深入分析了Go语言实现MySQL数据库事务的原理和实现方式,包括事务的ACID特性、事务的隔离级别、事务的实现方式等。同时,本文还介绍了Go语言中的事务处理机制和相关的API函数,以及如何使用Go语言实现MySQL数据库事务。
    2023-06-06
  • Go语言中利用http发起Get和Post请求的方法示例

    Go语言中利用http发起Get和Post请求的方法示例

    这篇文章主要给大家介绍了关于Go语言中利用http发起Get和Post请求的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11
  • 详解Golang函数式选项(Functional Options)模式

    详解Golang函数式选项(Functional Options)模式

    什么是函数式选项模式,为什么要这么写,这个编程模式解决了什么问题呢?其实就是为了解决动态灵活的配置不同的参数的问题。下面通过本文给大家介绍Golang函数式选项(Functional Options)模式的问题,感兴趣的朋友一起看看吧
    2021-12-12
  • Golang函数这些神操作你知道哪些

    Golang函数这些神操作你知道哪些

    这篇文章主要为大家介绍了一些Golang中函数的神操作,不知道你都知道哪些呢?文中的示例代码讲解详细,具有一定的学习价值,需要的可以参考一下
    2023-02-02
  • go语言中的udp协议及TCP通讯实现示例

    go语言中的udp协议及TCP通讯实现示例

    这篇文章主要为大家介绍了go语言中的udp协议及TCP通讯的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2022-04-04
  • go json转换实践中遇到的坑

    go json转换实践中遇到的坑

    在使用 go 语言开发过程中,经常需要使用到 json 包来进行 json 和 struct 的互相转换,这篇文章主要介绍了go json转换实践中遇到的坑,非常具有实用价值,需要的朋友可以参考下
    2018-12-12
  • go Cobra命令行工具入门教程

    go Cobra命令行工具入门教程

    Cobra是一个用Go语言实现的命令行工具并且现在正在被很多项目使用,例如:Kubernetes、Hugo和Github CLI等,通过使用Cobra,我们可以快速的创建命令行工具,特别适合写测试脚本,各种服务的Admin CLI等,本文重点给大家介绍go Cobra命令行工具,感兴趣的朋友一起看看吧
    2022-06-06
  • Go轻松构建WebSocket服务器的实现方案

    Go轻松构建WebSocket服务器的实现方案

    本文主要介绍了Go轻松构建WebSocket服务器的实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-08-08

最新评论