Go | 初步了解「字串」型別
💬 簡介
字串型別是最常用的資料型別之一,廣泛應用於處理文本資料。字串是由一系列 Unicode 字元組成的,並且是不可變的,這意味著一旦字串被創建,它的內容不能更改。
本篇文章將介紹字串型別,並深入探討它們的特性、常見操作及使用場景。
圖片來源:Gophers(地鼠造型的原創者為 Renee French)
🔎 Go 語言中的字串型別
1️⃣ 字串的基本概念
字串型別由一系列的 Unicode 字元組成,每個字串都是不可變的(immutable)。這表示字串的內容無法在創建後進行修改。如果需要修改字串,必須創建一個新的字串。
範例:簡單字串示範
1
2
3
4
5
6
7
8package main
import "fmt"
func main() {
var str string = "Hello, Go!"
fmt.Println(str) // 輸出:Hello, Go!
}📝在這個範例中,
str
是一個簡單的字串,包含了 “Hello, Go!”。這個字串是不可變的。範例:簡單字串不可變示範
1
2
3
4
5
6
7
8
9
10
11
12package main
import "fmt"
func main() {
var str string = "Hello, Go!"
// 嘗試修改字串會產生錯誤,因為字串是不可變的
// str[0] = 'h' // 編譯錯誤:cannot assign to str[0]
fmt.Println(str) // 輸出:Hello, Go!
}📝 字串不可變的意思:在 Go 中,字串是不可變的(immutable)。這意味著一旦字串被創建後,它的內容就無法直接修改。如果嘗試去更改字串中的某個字符(如 str[0] = ‘h’),編譯器會報錯。這是因為字串本身是不可變的資料結構,任何對字串的修改都會創建一個新的字串,而不是直接修改原始字串的內容。
2️⃣ 字串的操作
字串提供了多種操作方法,常見的有字串的長度、拼接、子字串等。
- 範例:字串長度與拼接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15package main
import "fmt"
func main() {
var str1 string = "Hello"
var str2 string = "Go"
// 計算字串長度
fmt.Println("字串長度:", len(str1)) // 輸出:5
// 字串拼接
var result string = str1 + ", " + str2 + "!"
fmt.Println(result) // 輸出:Hello, Go!
}📝在這個範例中,我們使用
len()
函式來計算字串的長度,並使用+
來進行字串的拼接。
3️⃣ 字串與字元
字串是由字元組成的,每個字元是由一個或多個位元組(byte)組成。可以處理多語言文本資料。
-範例:遍歷字串中的字元
1 | package main |
📝在這個範例中,
range
用來遍歷字串中的每一個 Unicode 字元,並顯示其位置和內容。
4️⃣ 字串切片
字串是不可變的,但可以創建一個字串的切片來操作字串的一部分。這個切片不會改變原始字串的內容,而是返回一個新的字串。
- 範例:字串切片
1
2
3
4
5
6
7
8
9package main
import "fmt"
func main() {
str := "Hello, Go!"
subStr := str[7:9] // 提取子字串
fmt.Println(subStr) // 輸出:Go
}📝在這個範例中,
str[7:9]
是一個字串切片,提取了從第 7 到第 9 個字元之間的內容(不包括第 9 個字元)。
⚠️ 注意事項
1️⃣ 字串是不可變的
字串型別的不可變性意味著它的內容無法修改。如果需要改動字串,必須重新創建一個新的字串。這在進行大量字串操作時可能會對性能產生影響。
2️⃣ 使用字串切片要小心
儘管字串切片是一個方便的操作,但需要注意的是,字串切片仍然會保持對原始字串的引用。因此,在某些情況下,這可能會導致意外的行為。建議在不需要修改原始字串的情況下使用切片。
🛠 常見字串操作方法
標準庫中的 strings
套件提供了許多字串處理函式,以下是幾個常用的操作:
strings.Contains(str, substr string) bool
:檢查字串是否包含子字串。strings.ToUpper(str string) string
:將字串轉換為大寫。strings.ToLower(str string) string
:將字串轉換為小寫。strings.Split(str, sep string) []string
:根據分隔符切割字串。
- 範例:使用 strings 套件
1 | package main |
📝在這個範例中,我們使用
strings
套件來檢查字串是否包含某個子字串、將字串轉換為大寫或小寫,並切割字串。
🎯總結
字串型別提供了多樣化的操作方法,從拼接、切割到大小寫轉換,能夠應對各種文本處理需求。理解字串的基本操作與注意事項,將幫助在開發過程中更加高效地處理文本資料。
最後建議回顧一下 Go | 菜鳥教學 目錄,了解其章節內容。
註:以上參考了
Go