异常处理
异常类型error
import "errors"
import "fmt"
func main() {
// 定义并初始化异常类型
var err1 error = errors.New("这是一个错误")
fmt.Println(err1)
var err2 error = fmt.Errorf("这也是一个错误")
fmt.Println(err2)
}
异常捕获recover
func main() {
// 异常捕获方式, 需要捕获哪个函数的异常,就需要放在哪个函数内部的第一位
defer func() {
if err := recover(); err != nil {
fmt.Println()
}
}()
a := 12
fmt.Println(a)
c1 := 12
c2 := 0
c := c1 / c2
fmt.Println(c)
}
// 结果
// 12
// runtime error: integer divide by zero
异常抛出panic
func Test() {
panic("这是一个致命错误,抛出异常")
}
字符串处理
字符串常用操作
import strings
func main() {
// Contains 字符串包含判断
strings.Contains("wwwwuuee", "uuee") // ture
strings.Contains("wwwwuuee", "ue1") // false
// Join 字符串拼接
s := []string{"abc", "hello", "world"}
string.Join(s, "@") // "abc@hello@world"
// Index 查找字符串位置
string.Index("hellopython", "python") // 5, 不存在返回-1
// Repeat 使字符串重复出现多次
string.Repeat("go", 2) // "gogo"
// Split 指定字符分割字符串
string.Split("ni,hao,nishni", ",") // [ni hao nishni]
// Trim根据指定字符,去掉首尾的空格字符串
string.Trim(" are you ok ", " ") // "are you ok"
// Fields以空格字符切割字符串,类似Split
strings.Fields(" are you ok ") // [are you ok]
// Replace将字符串的某个字符替换 (原字符串, 要替换字符, 新的字符,替换数量)
strings.Replace("gougougo", "go", "python", 2) // "pythonupythonugo"
}
正则表达式
import "regexp"
func main() {
// 解释规则
reg := regexp.MustCompiles(`正则表达式`) // 反引号是原生字符串
if reg == nil {
panic("error")
}
// 匹配得到结果
result = reg.FindAllStringSubmatch("要匹配字符串", -1) // -1表示全部匹配
}
JSON处理
import "encoding/json"
// 变量名必须大写, 如果想变量名小写,则需要转换
type Person struct {
Name string `json:"name"` // 变量名小写
Id int `json:"-"` // 不会输出到屏幕上
Age float32 `json:", string"` // json时候改变变量名的数据类型
}
func main() {
s := Person{}
// 将结构体或map转换为json
// resp, err := json.Marshal(s)
resp, _ := json.MarshalIndent(s, "", " ") // 格式化输出json结构
// 将json转换为结构体或map
map2 := make(map[string]interface{})
json.Unmarshal(resp, &map2)
}
网友评论