已经学完了C/C++
再学习Golang这门语言
"字符串":可解释型字符串 实现转义字符的效果
`字符串`:原生型字符串 转义字符的效果不实现
(`字符通常位于键盘左上角)
字符串可以进行拼接
字符串可以进行比较(按照字典序) 实现关系运算
字符串可以使用切片(前闭后开的区间)提取子串
字符串可以使用len()函数计算长度
但以上两点要求字符串只包含ASCLL码(uint8)
- // "" 可解释型的字符串
- var str0 string = "\thello"
- // `` 原生型的字符串
- var str1 string = `\t你好`
- // 区别 前者会实现特殊字符的效果 而后者不会
- fmt.Println(str0)
- fmt.Println(str1)
- //字符串连接
- fmt.Println("今天" + "好开心")
- str2 := "你是"
- str2 += "苹果"
- fmt.Println(str2)
- //字符串关系运算 字典序比较
- fmt.Println("a" > "b")
- //访问字符串中的部分内容
- //要求字符串中只包含ASCII码(uint8)的字符 不能含有中文
- //区间前闭后开
- str3 := "happy"
- fmt.Println(str3[0:2])
- //字符串长度函数
- //要求字符串中只包含ASCII码(uint8)的字符 不能含有中文
- fmt.Println(len(str3))

与C/C++不同语句块中的每一个case执行完后直接退出Switch语句
不需要加break
每一个case可以用逗号分隔出多种进入条件
- //switch语句
- var answer string
- fmt.Scan(&answer)
- switch answer {
- case "y", "Y":
- fmt.Println("同意")
- case "n", "N":
- fmt.Println("否定")
- default:
- fmt.Println("其他")
- }
可以利用break标签快捷跳出多重循环
标签应当放在所需跳出的循环的前一行
可以利用range语句遍历字符串
- //for语句
- var sum int = 0
- for i := 0; i <= 100; i++ {
- sum += i
- }
- fmt.Println(sum)
-
- sum = 0
- i := 1
- for i <= 100 {
- sum += i
- i++
- }
- fmt.Println(sum)
-
- sum = 0
- i = 0
- for {
- sum += i
- i++
- if i == 101 {
- break
- }
- }
- fmt.Println(sum)
-
- str4 := "hello world"
- for i, ch := range str4 {
- //由单引号围绕的字符字面值 由Go语法安全地转义
- fmt.Printf("%d %q\n", i, ch)
- }
-
- //break标签
- var p, q int
- breakLabel:
- for p = 0; p < 5; p++ {
- for q = 0; q < 5; q++ {
- if p*q == 9 {
- break breakLabel
- }
- fmt.Println(p, q, p*q)
- }
- }
- fmt.Println(p, q, p*q)
- }
