字符串是一個不可改變的字節(jié)序列低剔。Go 語言的字符串的字節(jié)使用 UTF-8 編碼標(biāo)識 Unicode 文本襟齿。
字符串定義
package main
import "fmt"
func main() {
/*
"" => 可解釋的字符串
`` => 原生字符串
特殊字符 \n \f \t \r \b
*/
var name string = "WP\tFS"
var name1 string = "WP\\tFS"
var desc string = `我是\t誰`
fmt.Println(name)
fmt.Println(name1)
fmt.Println(desc)
}
字符串操作
算術(shù)運算符: +
關(guān)系運算: == != > >= <=
賦值運算: +=
package main
import "fmt"
func main() {
// 操作
// 算術(shù)運算符: + (連接)
fmt.Println("我叫" + "WPFS")
// 關(guān)系運算(== != > >= < <=) 比較是通過逐個字節(jié)比較完成的
fmt.Println("ab" == "bb")
fmt.Println("ab" != "bb")
fmt.Println("ab" < "bb")
fmt.Println("ab" <= "bb")
fmt.Println("ab" > "bb")
fmt.Println("ab" >= "bb")
fmt.Println("bb" >= "b")
// 賦值運算
s := "我叫"
s += "wpf"
fmt.Println(s)
}
字符串索引和切片操作
內(nèi)置len
函數(shù)可以返回字符串中的字節(jié)數(shù)目(不是rune字符數(shù)目)。
索引操作s[i]
返回第i
個字節(jié)的字節(jié)值造垛,i
必須滿足0 ≤ i< len(s)
條件。
子字符串(切片)操作s[i:j]
是從s
的第i
個字節(jié)開始到第j
個字節(jié)(并不包含j本身挽鞠,左開右閉的原則)生成一個新字符串。
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
desc := "abcdef"
//len函數(shù)
fmt.Println(len(desc))
fmt.Println(desc, desc[0])
fmt.Printf("%T %s %q\n", desc, desc, desc)
fmt.Printf("%T %c %q\n", desc, desc[0], desc[0])
/*
切片
[start:end] 從start到 end - 1
子字符串(切片)操作s[i:j]是從s的第i個字節(jié)開始到第j個字節(jié)(并不包含j本身嫁赏,左開右閉的原則)生成一個新字符串。
i或者j被忽略深寥,當(dāng)它們被忽略時將采用0作為開始位置攘乒,采用len(s)作為結(jié)束的位置。
*/
fmt.Println(desc[:3])
fmt.Println(desc[2:])
fmt.Println(desc[:])
fmt.Printf("%T,%s\n", desc[0:2], desc[0:2])
fmt.Println(len(desc))
desc = "我愛中國"
fmt.Printf("%T %c\n", desc[0], desc[0])
fmt.Printf("%T,%s\n", desc[0:2], desc[0:2])
fmt.Println(len(desc))
s := "Hello, 世界"
fmt.Println(len(s))
fmt.Println(utf8.RuneCountInString(s))
}