零基础 go - 10(基本数据类型 - 字符串型)

3 阅读2分钟

一般来说字符串是一串固定长度的字符连接起来的字符序列,但在 Go 中字符串是由字节连接起来的

Go 语言中的字符串是 UTF-8 编码的字节序列,可以包含任意 Unicode 字符

一、string 类型的特点

  • string 是 Go 语言中的一种基本数据类型,表示一系列 Unicode 字符的不可变序列,使用双引号 "" 包裹
  • string 的默认值是 ""(空字符串)
  • string 是不可变的,一旦创建就不能修改,可以通过连接、切片等操作来生成新的字符串
  • 字符串连接使用 + 运算符,可以连接多个字符串。如果字符过多可以换行连接,注意 + 需要放在行尾
  • 字符不能直接修改,因为字符串是不可变的,如果需要修改字符串中的字符,需要先将字符串转换为 []rune[]byte,修改后再转换回 string

二、string 类型表示形式

  • 字符串字面量:使用双引号 "" 包裹的字符序列,例如 "Hello, 世界"
  • 原始字符串字面量:使用反引号 包裹的字符序列,原样输出其中的内容,不进行转义,例如 Hello\nWorld 输出 Hello\nWorld。可以实现防止攻击和保留格式的功能,适合表示多行字符串或包含特殊字符的字符串

三、string 类型的使用示例

package main

import (
    "fmt"
)

func main() {
    // 1、定义字符串
    var str string = "Hello, 世界"
    fmt.Println("字符串 str =", str)


    // 2、默认值
    var defaultStr string
    fmt.Println("字符串 defaultStr =", defaultStr) // 输出空字符串


    // 3、字符串连接
    var str1 string = "Hello"
    var str2 string = "World"
    var str3 string = str1 + ", " + str2 + "!"
    fmt.Println("字符串 str3 =", str3)


    // 4、字符不能直接修改
    // str3[0] = 'h' // 编译错误:cannot assign to str3[0]



    // 5、修改字符串中的字符
    var runes []rune = []rune(str3) // 将字符串转换为 []rune
    runes[0] = 'h' // 修改第一个字符
    str3 = string(runes) // 将 []rune 转换回 string
    fmt.Println("修改后的字符串 str3 =", str3)


    // 6、原始字符串字面量 和 反引号
    var normalStr string = "Hello\nWorld"
    var rawStr string = `Hello\nWorld`
    fmt.Println("普通字符串 normalStr =", normalStr) // 输出 Hello 换行 World
    fmt.Println("原始字符串 rawStr =", rawStr) // 输出 Hello\nWorld
}