前言:书接上回,依旧需要c的基础
10.结构体
与c中的结构体相似:
type 结构体名字 struct{
属性名 属性类型
}
type user struct {
name string
pwd string
}
结构体方法:直接把结构体当成一种数据类型即可
func (u user) checkPwd(password string) bool {
return u.pwd == password
}
11. 错误处理
error是一个数据类型,因此需要new一个对象,比如errors.New(“not found”),可以作为返回值出现在return中。
12.字符串操作:代码如下图所示
a := "string233"
fmt.Println(strings.Contains(a, "str"))
fmt.Println(strings.Count(a, "3"))
fmt.Println(strings.HasPrefix(a, "str"))
fmt.Println(strings.HasSuffix(a, "ing"))
fmt.Println(strings.Index(a, "in"))
fmt.Println(strings.Join([]string{"string", "233"}, "-"))
fmt.Println(strings.Repeat(a, 2))
fmt.Println(strings.Replace(a, "2", "6", -1))
fmt.Println(strings.Split("a-b-c", "-"))
fmt.Println(strings.ToLower(a))
fmt.Println(strings.ToUpper(a))
fmt.Println(len(a))
b := "你好"
fmt.Println(len(b))
}
结果如下图所示:
函数的作用也展现了出来,省略主语变量a后,依次为:
1. 判断是否包含该片段
2. 数“”内字符出现的次数
3. 判断有无该前缀
4. 判断有无该后缀
5. 找出现该字符串的第一个索引
6. 将两个字符串以“”内的符号连接
7. 重复该字符串
8. 用“”的后一个字符取代前一个
9. 按照“-”的标识进行分裂字符串
10. 转为小写
11. 转为大写
12. 计算长度
13. 计算长度
13.字符串格式化,如下图所示
type point struct {
x int
y int
}
func mystr() {
s := "string"
n := 233
p := point{1, 2}
fmt.Println(s, n)
fmt.Println(p)
fmt.Printf("s=%v\n", s)
fmt.Printf("n=%v\n", n)
fmt.Printf("p=%v\n", p)
fmt.Printf("p=%+v\n", p)
fmt.Printf("p=%#v\n", p)
f := 3.141592653
fmt.Println(f)
fmt.Printf("%.2f\n", f)
}
我们通过使用不同形式的%v来实现字符串的格式化,结果如下图所示:
14. JSON处理:
需要引入”encoding/json”,并在之后把json化为字符串:string(json的名字)
15. 时间处理: 引入“time”
16. 数字处理
需要引入”strconv”
17. 进程处理
引入”os”,”exec”等。