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()用于替换字符串中的一部分,并用一个新的字符串替换它。