兄弟連go教程(5)字串
字串是不可變值型別,內部⽤用指標指向 UTF-8 位元組陣列。
•預設值是空字串 ""。
•⽤用索引號訪問某位元組,如 s[i]。
•不能⽤用序號獲取位元組元素指標,&s[i] ⾮非法。
•不可變型別,⽆無法修改位元組陣列。
•位元組陣列尾部不包含 NULL。
runtime.h
使⽤用索引號訪問字元 (byte)。
輸出:
使⽤用 "`" 定義不做轉義處理的原始字串,⽀支援跨⾏行。
輸出:
連線跨⾏行字串時,"+" 必須在上⼀一⾏行末尾,否則導致編譯錯誤。
⽀支援⽤用兩個索引號返回⼦子串。⼦子串依然指向原位元組陣列,僅修改了指標和⻓長度屬性。
單引號字元常量表⽰示 Unicode Code Point,⽀支援 \uFFFF、\U7FFFFFFF、\xFF 格式。
對應 rune 型別,UCS-4。
輸出:
要修改字串,可先將其轉換成 []rune 或 []byte,完成後再轉換為 string。⽆無論哪種轉
換,都會重新分配記憶體,並複製位元組陣列。
輸出:
輸出:
•預設值是空字串 ""。
•⽤用索引號訪問某位元組,如 s[i]。
•不能⽤用序號獲取位元組元素指標,&s[i] ⾮非法。
•不可變型別,⽆無法修改位元組陣列。
•位元組陣列尾部不包含 NULL。
runtime.h
struct String
{
byte* str;
intgo len;
};
使⽤用索引號訪問字元 (byte)。
s := "abc"
println(s[0] == '\x61', s[1] == 'b', s[2] == 0x63)
輸出:
true true true
使⽤用 "`" 定義不做轉義處理的原始字串,⽀支援跨⾏行。
s := `a
b\r\n\x00
c`
println(s)
輸出:
a
b\r\n\x00
c
連線跨⾏行字串時,"+" 必須在上⼀一⾏行末尾,否則導致編譯錯誤。
s := "Hello, " +
"World!"
s2 := "Hello, "
+ "World!" // Error: invalid operation: + untyped string
⽀支援⽤用兩個索引號返回⼦子串。⼦子串依然指向原位元組陣列,僅修改了指標和⻓長度屬性。
s := "Hello, World!"
s1 := s[:5] // Hello
s2 := s[7:] // World!
s3 := s[1:5] // ello
單引號字元常量表⽰示 Unicode Code Point,⽀支援 \uFFFF、\U7FFFFFFF、\xFF 格式。
對應 rune 型別,UCS-4。
func main() {
fmt.Printf("%T\n", 'a')
var c1, c2 rune = '\u6211', '們'
println(c1 == '我', string(c2) == "\xe4\xbb\xac")
}
輸出:
int32 // rune 是 int32 的別名
true true
要修改字串,可先將其轉換成 []rune 或 []byte,完成後再轉換為 string。⽆無論哪種轉
換,都會重新分配記憶體,並複製位元組陣列。
func main() {
s := "abcd"
bs := []byte(s)
bs[1] = 'B'
println(string(bs))
u := "電腦"
us := []rune(u)
us[1] = '話'
println(string(us))
}
輸出:
aBcd
電話
⽤用 for 迴圈遍歷字串時,也有 byte 和 rune 兩種⽅方式。func main() {
s := "abc漢字"
for i := 0; i < len(s); i++ { // byte
fmt.Printf("%c,", s[i])
}
fmt.Println()
for _, r := range s { // rune
fmt.Printf("%c,", r)
}
}
輸出:
a,b,c,æ,±,,å,,,
a,b,c,漢,字,
尹成老師
QQ77025077
微信18510341407
所有視訊在尹成學院
www.yinchengxueyuan.com
尹成百度雲請聯絡QQ475318423
相關文章
- 兄弟連go教程(6)指標Go指標
- 兄弟連go教程(2)型別-常量Go型別
- 兄弟連go教程(3)基本型別Go型別
- 兄弟連go教程(16)資料 - ArrayGo
- 兄弟連go教程(17)資料 - SliceGo
- 兄弟連go教程(18)資料 - MapGo
- 兄弟連go教程(19)資料 -StructGoStruct
- 兄弟連go教程(1)型別-變數Go型別變數
- 兄弟連go教程(7)自定義型別Go型別
- 兄弟連go教程(10)表示式 - 控制流Go
- 兄弟連go教程(12)函式 - 變參Go函式
- 兄弟連go教程(9)表示式-初始化Go
- 兄弟連go教程(13)函式 返回值Go函式
- 兄弟連go教程(14)函式 - 匿名函式Go函式
- 兄弟連go教程(15)函式 - 延遲呼叫Go函式
- 兄弟連go教程(19)資料 - 匿名欄位Go
- 兄弟連go教程(19)資料 - ⾯物件導向Go物件
- 兄弟連go教程(4)型別-引用及轉換Go型別
- 兄弟連go教程(8)表示式--保留字;運算子Go
- 兄弟連go教程(11)函式 - 函式定義Go函式
- 兄弟連go教程(15)函式 - 錯誤處理Go函式
- 兄弟連golang神技(1)-關於 Go 語言的介紹Golang
- 兄弟連百度應用開發系列視訊教程
- go 字串Go字串
- Go 基礎教程--5 控制語句Go
- Go 基礎教程--5 陣列 ArrayGo陣列
- RabbitMQ Go客戶端教程5——topicMQGo客戶端
- 區塊鏈教程Fabric1.0原始碼分析policy(背書策略)-兄弟連區塊鏈區塊鏈原始碼
- Java™ 教程(字串)Java字串
- 區塊鏈教程Fabric1.0原始碼分析流言演算法Gossip服務端一兄弟連區塊鏈教程區塊鏈原始碼演算法Go服務端
- GO語言————4.6 字串Go字串
- PHP轉Go系列:字串PHPGo字串
- mongodb連線字串MongoDB字串
- 區塊鏈教程Fabric1.0原始碼分析流言演算法Gossip服務端二-兄弟連區塊鏈原始碼演算法Go服務端
- Go字串實戰操作大全!Go字串
- Go基礎-字串函式Go字串函式
- SCSS 字串連線符CSS字串
- Java™ 教程(比較字串和字串的部分)Java字串