Go 語言中的字符串是 byte
值的序列。
如前所述,你可以使用下面的語法來定義一個字符串:
var name = "test"
需要注意的是,和其他語言不同,字符串只能使用雙引號來定義,不能使用單引號。
要獲取字符串的長度,可以使用內建的 len()
函數:
len(name) //4
你可以使用方括號來訪問字符串中的個別字符,通過傳遞所需字符的索引:
name[0] //"t"(索引從 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()
用於替換字符串中的一部分並將其替換為新內容