
Go 语言对字符串的操作分为两大核心包strings字符串增删查改、分割、匹配、截取等处理strconv字符串与基本数据类型bool/int/float互相转换本文一、strings 包字符串常用操作1. Contains 判断子串是否存在语法strings.Contains(s, substr string) bool作用判断字符串s是否包含子串substr存在返回true不存在返回falsegopackage main import ( fmt strings ) func main() { str : hellogo res1 : strings.Contains(str, hello) res2 : strings.Contains(str, java) fmt.Println(res1) // true fmt.Println(res2) // false }2. Join 拼接切片内字符串语法strings.Join(strs []string, sep string) string作用使用指定分隔符将字符串切片拼接成一个完整字符串gofunc main() { arr : []string{a, b, go} res : strings.Join(arr, ,) fmt.Println(res) // a,b,go }3. Index 查找子串下标位置语法strings.Index(s, substr string) int作用返回子串第一次出现的索引不存在返回-1gofunc main() { str : helloworld index : strings.Index(str, world) fmt.Println(index) // 5 }4. Split 按分隔符拆分字符串语法strings.Split(s, sep string) []string作用以指定分隔符切割字符串返回字符串切片gofunc main() { str : java,go,python slice : strings.Split(str, ,) fmt.Println(slice) // [java go python] }5. Trim 去除字符串首尾指定字符语法strings.Trim(s, cutset string) string作用清除字符串两头包含在cutset中的所有字符gofunc main() { str : ##hello## res : strings.Trim(str, #) fmt.Println(res) // hello }6. Fields 按空白分割语法strings.Fields(s string) []string作用自动忽略连续空格、制表符、换行符拆分出有效文本切片gofunc main() { str : go java python slice : strings.Fields(str) fmt.Println(slice) // [go java python] }二、strconv 包字符串与基础类型互转goimport ( fmt strconv )1. Append 系列类型转字符串并追加到 byte 切片适合高性能拼接场景直接操作字节数组减少内存拷贝AppendBool(dst []byte, b bool) []byte追加布尔值AppendInt(dst []byte, i int64, base int) []byte追加数字base 代表进制10 十进制AppendQuote(dst []byte, s string) []byte追加带双引号的字符串完整示例gofunc main() { // 初始化容量1024的字节切片 slice : make([]byte, 0, 1024) // 追加布尔 slice strconv.AppendBool(slice, true) // 追加十进制数字1234 slice strconv.AppendInt(slice, 1234, 10) // 追加带引号字符串 slice strconv.AppendQuote(slice, abcgohello) // byte切片转string打印 fmt.Println(slice , string(slice)) }2. Format 系列其他类型 → 字符串2.1 FormatBool 布尔转字符串gostr : strconv.FormatBool(false) fmt.Println(str) // false2.2 FormatFloat 浮点数转字符串函数签名FormatFloat(f float64, fmt byte, prec, bitSize int) string参数说明f待转换浮点数fmt格式标识f普通小数格式prec小数点保留位数-1自动适配bitSize32/float32、64/float64gostr : strconv.FormatFloat(3.14, f, -1, 64) fmt.Println(str) // 3.142.3 Itoa 整型数字转字符串等价于FormatInt(int64(num), 10)gostr : strconv.Itoa(66666) fmt.Println(str) // 666663. Parse 系列字符串 → 其他类型会返回 error转换失败时 err 不为空业务中必须判断错误3.1 ParseBool 字符串转布尔仅支持true/false其他字符串转换报错gofunc main() { var flag bool var err error flag, err strconv.ParseBool(true) if err nil { fmt.Println(flag , flag) } else { fmt.Println(转换失败 err , err) } }3.2 Atoi 数字字符串转 intAtoiParseInt十进制简化版下划线忽略错误简单场景使用goa, _ : strconv.Atoi(567) fmt.Println(a) // 567三、完整可运行整合 Demogopackage main import ( fmt strconv strings ) func main() { // strings 包测试 s : hellogo,golang fmt.Println(Contains(hello):, strings.Contains(s, hello)) fmt.Println(Index(go):, strings.Index(s, go)) fmt.Println(Split, strings.Split(s, ,)) fieldStr : go java fmt.Println(Fields, strings.Fields(fieldStr)) fmt.Println(Trim, strings.Trim(###golang###, #)) joinSlice : []string{2026, 07, 18} fmt.Println(Join, strings.Join(joinSlice, -)) fmt.Println() // strconv Append slice : make([]byte, 0, 128) slice strconv.AppendBool(slice, true) slice strconv.AppendInt(slice, 999, 10) slice strconv.AppendQuote(slice, go笔记) fmt.Println(Append结果, string(slice)) // Format 类型转字符串 str1 : strconv.FormatBool(true) str2 : strconv.FormatFloat(2.5, f, 2, 64) str3 : strconv.Itoa(888) fmt.Println(Format转换, str1, str2, str3) // Parse 字符串转类型 b, err : strconv.ParseBool(false) if err nil { fmt.Println(ParseBool, b) } num, _ : strconv.Atoi(12345) fmt.Println(Atoi, num) }四、核心知识点总结复习重点strings 包速记Contains判断是否包含子串Index查找子串索引无则返回 - 1Split按分隔符拆分字符串为切片Trim清除首尾指定字符Fields自动切割所有空白提取有效单词Join切片拼接为完整字符串strconv 包速记Append追加到 byte 切片高性能拼接Format基础类型 → stringFormatBool / FormatFloat / Itoaint 转字符串Parsestring → 基础类型返回 error 捕获非法转换ParseBool / Atoi数字字符串转 int