go基本语法操作

2019-01-12  本文已影响0人  洛奇lodge

异常处理

异常类型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)
}
上一篇 下一篇

猜你喜欢

热点阅读