Go后端技术学习总结-Day7 | 青训营

43 阅读2分钟

书接上回,更多内容请移步主页查看“后端技术学习总结|青训营”系列。

Go语言语法初步讲解

  1. 错误处理,errors,返回两个值,两个方法(存疑)
import (
    "errors"
    "fmt"
)

type user struct {
    name     string
    password string
}

//定义一个找用户的函数
func findUser(users []user, name string) (v *user, err error) {
    for _, u := range users {
            if u.name == name {
                    return &u, nil
            }
    }
    //没找到的话for执行完执行这一句
    return nil, errors.New("not found")
}

func main() {
    u, err := findUser([]user{{"wang", "1024"}}, "wang")
    if err != nil {
            fmt.Println(err)
            return
    }
    fmt.Println(u.name) // wang

    if u, err := findUser([]user{{"wang", "1024"}}, "li"); err != nil {
            fmt.Println(err) // not found
            return
    } else {
            fmt.Println(u.name)
    }
}

  1. 字符串操作、字符串格式化
import (
    "fmt"
    "strings"
)

type point struct {
	x, y int
}

func main() {
    a := "hello"
    
    //判断字符串1是否存在字符串2
    fmt.Println(strings.Contains(a, "ll"))                // true
    
    //统计字符串2在字符串1中出现的字数,如果字符串2为空字符串,那么将返回字符串1的“长度+1”的数值
    fmt.Println(strings.Count(a, "l"))                    // 2
    
    //是否以XX开头
    fmt.Println(strings.HasPrefix(a, "he"))               // true
    
    //是否以XX结尾
    fmt.Println(strings.HasSuffix(a, "llo"))              // true
    
    //查找子字符串在主字符串中的位置
    fmt.Println(strings.Index(a, "ll"))                   // 2
    
    //在XX和XXX之间添加XX
    fmt.Println(strings.Join([]string{"he", "llo"}, "-")) // he-llo
    
    //重复
    fmt.Println(strings.Repeat(a, 2))                     // hellohello
    
    //替换,a为要处理的字符串,e为要替换的,E为替换结果,-1表示替换全部
    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
    
    //一个中文符号占3个字符(UTF-8情形下)
    b := "你好"
    fmt.Println(len(b)) // 6
    
    //字符串格式化
    s := "hello"
    n := 123
    p := point{1, 2} // point结构体见上定义
    fmt.Println(s, n) // hello 123
    fmt.Println(p)    // {1 2}
    
    //直接用v,不用区分,+变详细,#更详细
    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("%.2f\n", f) // 3.14
}