这是我参与「第五届青训营」笔记创作活动的第7天
基础语法
字符串操作
在标准库的strings包里有很多的字符串工具函数。
例如Contains,判断一个字符串中是否包含另一个字符串。Count,字符串计数。Index,查找某个字符串的位置。Join,连接多个字符串。Repeat,重复多个字符串。len函数去获取字符串的长度,注意一个中文会对应多个字符。
package main
import (
"fmt"
"strings"
)
func main() {
a := "hello"
fmt.Println(strings.Contains(a, "ll")) // true
fmt.Println(strings.Count(a, "l")) // 2
fmt.Println(strings.HasPrefix(a, "he")) // true
fmt.Println(strings.HasSuffix(a, "llo")) // true
fmt.Println(strings.Index(a, "ll")) // 2
fmt.Println(strings.Join([]string{"he", "llo"}, "-") // he-llo
fmt.Println(strings.Repeat(a, 2)) // hellohello
fmt.Println(strings.Replace(a, "e", "E", -1)) // hEllo
fmt.Println(strings.Split("a-b-c", "-")) // [a b c]
fmt.Println(strings.ToLower(a)) // hello
fmt.Println(strings.ToUpper(a)) // HELLO
fmt.Println(len(a)) // 5
b := "你好"
fmt.Println(len(b)) // 6
}
字符串格式化
在标准库的fmt包里面,有非常多的字符串格式化相关的方法.
最常见的就是fmt.Println,打印多个变量并且换行。fmt.Printf,这个很类似于C语言中的printf函数。不同的是在Golang里面,你可以很轻松地用%v来打印任何类型的变量,而不用区分数字用%d、字符串用%s。你可以用%+v来得到更加详细的结构。用%#v,则会进一步详细。结构体用%v会打印出值,用%+v会打印出字段的名字和值,用%#v会打印出结构体的整个构造的名称,还有它的字段名字和值。你可以用%.2f这种方式来去打印出一个保留两位小数的浮点数。
package main
import "fmt"
type point struct {
x, y, int
}
func main() {
s := "hello"
n := 123
p := point{1, 2}
fmt.Println(s, n) // hello 123
fmt.Println(p) // {1 2}
fmt.Printf("s=%v\n", s) // s=hello
fmt.Printf("n=%v\n", n) // n=123
fmt.Printf("p=%v\n", p) // p={1 2}
fmt.Printf("p=%+v\n", p) // p={x:1 y:2}
fmt.Printf("p=%#v\n", p) // p=main.point{x:1, y:2}
f := 3.141592653
fmt.Println(f) // 3.141592653
fmt.Printf("%.2lf\n", f) // 3.14
}