美文网首页
GO基础整理

GO基础整理

作者: HueyYao | 来源:发表于2021-03-28 22:48 被阅读0次

    第一部分

    常量:

    常量的数值可以作为各种类型使用 
    
    func consts() {
        const (
            filename  = "abc.txt"
            a, b  = 3, 4
        )
        var c int
        c = int(math.Sqrt(a*a + b*b))
        fmt.Println(filename, c)
    }
    
    枚举类型举例
        tips:  1 :没有表达式的常量定义 复用上一行的表达式
    
         2 :从第一行开始 iota从0逐行+1
    
             3: 不同的const定义块互相不干扰
    
         4 :iota只能在常量组中使用
    
    func enums(){
        //普通枚举类型
        const(
            cpp = iota
            _
            java
            golang
        )
        //自增值枚举类型b  kb mb gb tb pb
        const(
            b = 1 << (10 * iota)
            kb
            mb
            gb
            tb
            pb
        )
        fmt.Println(cpp, java, golang)
        fmt.Println(b, kb, mb, gb, tb, pb)
    
    }
    const(
        a = iota // iota只能在常量组中使用
        b = 10
        c   // 没有表达式的常量定义 复用上一行的表达式
        d, e = iota, iota
        f = iota // 从第一行开始 iota从0逐行+1
    )
    iota代表的是这里的行数
    打印下来:
    0 10 10 3 3 4
    

    Switch使用

    func grade(score int) string {
        g := ""
        switch {
        case score < 0 || score > 100:
            panic(fmt.Sprintf("Wrong score: %d", score))
        case score <60:
            g = "F"
        case score <80:
            g = "C"
        case score <90:
            g = "B"
        case score <100:
            g = "A"
        }
        return g
    }
    

    IF判断方式

    if的条件是可以赋值的
    if的条件里赋值的变量作用域就在这个if语句里
    

    举例:

    func main() {
        const filename = "abc.txt"
        if contents, err := ioutil.ReadFile(filename); err != nil{
            fmt.Println(err)
        } else {
            //print文件使用
            fmt.Printf("%s\n", contents)
        }
        //之前的写法
    /*
        contents, err := ioutil.ReadFile(filename);
        if err != nil{
            fmt.Println(err)
        } else {
            //print文件使用
            fmt.Printf("%s\n", contents)
        }*/
    }
    

    数组:

    [10]int 和[20]int 时不同的类型
    
    调用func f(arr [10]int) 会拷贝数组
    
    定义数组的方式:
    
        var arr1 [5]int
        arr2 := [3]int{1, 3, 5}
        arr3 := [...]int{2, 4, 6, 8, 10}
        //多维数组 四行五列
        var grid [4][5]int
    

    遍历数组的方式:

        //普通处理数组
        for i := 0; i < len(arr3); i++ {
            fmt.Println(arr3[i])
        }
        //range关键字获取数组的下标和值
        for _, v := range arr3 {
            fmt.Println(v)
        }
    

    class命名 大写为public 小写为private

    一个目录只能有一个package包

    main()方法 必须配合package main

    函数的两种写法:

    语法一

    func session(s RetrieverPoster) string{
       s.Post(url, map[string]string{
          "contents": "another faked imooc.com",
       })
       return s.Get(url)
    }
    调用方式就是session(***)
    

    语法二

    func (s RetrieverPoster) session string{
       s.Post(url, map[string]string{
          "contents": "another faked imooc.com",
       })
       return s.Get(url)
    }
    调用方式就是 ***.session()
    

    go mod依赖管理

    由GO命令统一管理 用户不必关心目录结构

    初始化:go mod init

    增加依赖: go get

    更新依赖: go get [@v版本号] 拿到新老版本之后mod会多一些东西 通过go mod tidy把多余依赖去除

    项目迁移到go mod: go mod init , go build ./...

    相关文章

      网友评论

          本文标题:GO基础整理

          本文链接:https://www.haomeiwen.com/subject/rlamhltx.html