go中的字符串

57 阅读2分钟

Go中的字符串是一串byte 的值。

正如我们在上面看到的,你可以用这种语法定义一个字符串:

var name = "test"

值得注意的是,与其他语言不同,字符串只能用双引号来定义,而不是单引号。

要获得一个字符串的长度,可以使用内置的len() 函数:

len(name) //4

你可以使用方括号访问单个字符,传递你想得到的字符的索引:

name[0] //"t" (indexes start at 0)
name[1] //"e"

你可以使用这个语法获得字符串的一部分:

name[0:2] //"te"
name[:2]  //"te"
name[2:]  //"st"

使用这个你可以创建一个字符串的副本,使用:

var newstring = name[:]

你可以将一个字符串分配给一个新的变量:

var first = "test"
var second = first

字符串是不可变的,所以你不能更新字符串的值。

即使你使用赋值运算符给first ,值second ,仍然会是"test"

var first = "test"
var second = first

first = "another test"

first  //"another test"
second //"test"

字符串是引用类型,这意味着如果你把一个字符串传递给一个函数,那么这个字符串的引用将被复制,而不是它的值。但由于字符串是不可变的,在这种情况下,与传递一个int ,例如,在实践中并没有很大的区别。

你可以使用+ 操作符将两个字符串连接起来:

var first = "first"
var second = "second"

var word = first + " " + second  //"first second"

Go在strings 包中提供了几个字符串工具。

我们已经在 "Hello, World!"的例子中看到如何导入一个包。

下面是如何导入strings

package main

import (
    "strings"
)

然后你就可以使用它了。

例如,我们可以使用HasPrefix() 函数来查看一个字符串是否以特定的子串开始:

package main

import (
    "strings"
)

func main() {
    strings.HasPrefix("test", "te") // true
}

完整的方法列表可以在这里找到: https://pkg.go.dev/strings

下面是一个你可能经常使用的方法列表:

  • strings.ToUpper() 返回一个新的字符串,大写
  • strings.ToLower() 返回一个新的字符串,小写字母
  • strings.HasSuffix() 检查一个字符串是否以子串结束
  • strings.HasPrefix() 检查一个字符串是否以子串开始
  • strings.Contains() 检查一个字符串是否包含一个子串
  • strings.Count() 计算一个子串在一个字符串中出现的次数
  • strings.Join() 用来连接多个字符串并创建一个新的字符串
  • strings.Split() 用于从一个字符串中创建一个字符串数组,在一个特定的字符上划分原始字符串,如逗号或空格。
  • strings.ReplaceAll() 用于替换字符串中的一部分,并用一个新的字符串替换它。