GO基础整理

第一部分

常量:

常量的数值可以作为各种类型使用 
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 ./...

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • File types(文件类型) go命令检查目录中特定文件的集合。它根据文件的扩展名表示要检查的文件。这些扩展名...
    Cxb168阅读 5,734评论 0 0
  • 1. 简介 GO Modules 也称作 go mod 是golang 官方最新的几个golang 版本中推出的 ...
    楚江云阅读 5,337评论 0 2
  • 原文链接 https://golang.org/cmd/go/由于内容过长,分两次发布 Go 是一个用来管理Go源...
    Cxb168阅读 5,043评论 0 0
  • Go 1.11 Modules翻译自 Go 官方wiki # Go 1.11 Modules 根据[提议](htt...
    drawing818阅读 5,326评论 0 0
  • iOS | 面试知识整理 - OC基础 (一) 1. #include、#import、@class的区别? 在C...
    d76d0c9d2b04阅读 3,030评论 0 2

友情链接更多精彩内容