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

字符串是不可變的,這意味著你不能更新字符串的值。

即使你使用賦值運算符將新值分配給 firstsecond 的值仍然是 "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() 用於替換字符串中的一部分並將其替換為新內容