編程筆記 Golang基礎 017 數據類型:字符串類型
- 一、字符串類型
- 小結
在Go語言中,字符串(string)是一種基本的數據類型,用于表示文本數據。它是一個不可變的字符序列,由UTF-8編碼的字節組成,支持Unicode字符集。
一、字符串類型
-
定義:
- Go中的字符串是由雙引號
"
包圍的一系列字符。
var greeting string = "Hello, 世界"
- Go中的字符串是由雙引號
-
內部實現:
- 在內存中,字符串實際上是通過一個字節數組(
[]byte
)來存儲的,并且該數組的內容是只讀的,因此字符串本身是不可修改的。 - 字符串的實際長度等于其包含的字節數,但它的有效字符數量取決于實際的UTF-8編碼序列。
- 在內存中,字符串實際上是通過一個字節數組(
-
Unicode支持:
- Go語言原生支持Unicode字符,這意味著你可以直接在字符串中使用任何Unicode字符或代碼點。
s := "😀😃😄" // 這是一個包含三個表情符號的字符串
-
操作與方法:
- 雖然字符串不可變,但可以通過函數和方法進行連接、復制、查找、替換等操作。
package main import ("fmt""strings" )func main() {str1 := "Hello"str2 := "World"combined := str1 + " " + str2 // 字符串拼接fmt.Println(combined) // 輸出:Hello WorldlowerStr := strings.ToLower("Golang") // 轉為小寫fmt.Println(lowerStr) // 輸出:golangcontains := strings.Contains(combined, "Wor") // 檢查子串存在性fmt.Println(contains) // 輸出:truereplaced := strings.Replace(combined, "World", "Universe", -1) // 替換子串fmt.Println(replaced) // 輸出:Hello Universe }
- 雖然字符串不可變,但可以通過函數和方法進行連接、復制、查找、替換等操作。
-
轉換:
- 可以將字符串轉換為字節切片(
[]byte
),反之亦然。str := "example" bytes := []byte(str) newStr := string(bytes)
- 可以將字符串轉換為字節切片(
-
原始字符串(Raw String Literals):
- 原始字符串允許在字符串內容中直接包含換行符和反斜杠,而無需轉義。
raw := `This is a
- 原始字符串允許在字符串內容中直接包含換行符和反斜杠,而無需轉義。
multiline string.
The backslash \ does not need to be escaped here.`
```
- 空字符串:
- 空字符串用雙引號包圍的零長度字符序列表示:
""
。
- 空字符串用雙引號包圍的零長度字符序列表示:
總的來說,Go語言中的字符串設計旨在簡化對Unicode文本的處理,同時提供了豐富的標準庫函數來進行高效的操作和管理。
小結
字符串類型使用率最高。