如何使用Golang字符串操作_拼接、切割和格式化字符串

Go语言字符串不可变,拼接用+或fmt.Sprintf,大量时用strings.Builder;切割用strings.Split、Fields或切片;格式化用fmt和strconv;判断、替换、大小写操作由strings包提供。

Go语言中字符串操作简单直接,但要注意字符串在Go中是不可变的(immutable),每次操作都会生成新字符串,不会修改原值。

字符串拼接:用+或fmt.Sprintf

最常用的是+运算符,适合少量字符串连接;若涉及变量插值或复杂格式,推荐fmt.Sprintf

  • +拼接:直接、高效,但只适用于已知字符串字面量或变量,如"Hello" + " " + name
  • fmt.Sprintf:支持占位符和类型转换,例如fmt.Sprintf("User: %s, Age: %d", name, age)
  • 大量拼接(如循环中)建议用strings.Builder,避免频繁内存分配

字符串切割:用strings包的Split、Fields、Substr

Go标准库strings包提供了丰富切割工具,按需选择:

  • strings.Split(s, sep):按分隔符切片,返回[]string,如strings.Split("a,b,c", ",") → ["a","b","c"]
  • strings.Fields(s):按任意空白字符(空格、制表符、换行等)分割,自动忽略连续空白和首尾空白
  • 取子串用s[start:end](注意是字节索引,非rune;含中文时需先转为rune切片再操作)

字符串格式化:fmt.Printf系列与strconv辅助

格式化输出或生成字符串主要靠fmt包,配合strconv处理数字转换更安全。

  • %s(字符串)、%d(十进制整数)、%f(浮点数)、%v(默认格式)最常
  • 控制精度:%.2f保留两位小数,%06d表示至少6位、不足补零
  • 数字转字符串优先用strconv.Itoa(int)或strconv.FormatFloat(float),比fmt.Sprintf("%d", n)略快且语义明确

实用小技巧:判断、替换与大小写

日常高频操作也常被归入“字符串处理”范畴,strings包已覆盖大部分需求:

  • 判断:strings.HasPrefixstrings.HasSuffixstrings.Contains
  • 替换:strings.Replace(指定次数)或strings.ReplaceAll(全部替换)
  • 大小写:strings.ToUpperstrings.ToLowerstrings.Title(首字母大写,注意对Unicode支持有限,敏感场景可用golang.org/x/text/cases)