2020.6.25 Go

发布于 2020-06-25  45 次阅读


Table of Contents

  • 1.var 变量名 变量类型
  • 2.var 变量名 = 变量值 //自动推导
  • 3.变量名:=变量值
    • 变量名要是新声明的变量,否则会出错
  • 变量可以自动推导
  • 使用 var 变量 变量类型
  • 可以拆包
  • type 是定义一个别名
  • nil是代表空类型(下面的代表nil)
    • var a *int
    • var a []int
    • var a map[string] int
    • var a chan int
    • var a func(string) int
    • var a error // error 是接口
  • var a int = 1 指定赋值
    type A int
    var (
        a int = 1
      b int = 1
    )
    a:=1 类型推断

  • Go定义常量

    • const 关键字
    • iota 关键字 (连续关键字的定义)
  • Go基本数据类型

    • bool
    • string 字符串
    • int int8 int16 int32 int64
    • uint uint8 uint16 uint32 uint64 uintptr
    • byte // uint8
    • rune int32
    • float32 float64
    • complex64 complex128
  • Go类型转换

    • Go语言不支持隐式转换
    • 别名和原有类型也不能隐式转换
  • Go预定值

    • math中有MaxInt64,MaxFloat64等等值
  • 指针类型(垃圾回收)

    • 不支持指针运算
    • string是值,默认是空串,不是nil
  • Go语言运算符

    • 算数运算符
      • + - * / % ++ –支持自增自减(后置自增自减)
    • 比较运算符
      • == != > < >= <=
      • == 比较数组,是比较数组内的值,而不是比较元素地址(python)
    • 逻辑运算符
      • && || !=
    • 位运算符
      • & | ^ << >>
      • &^ 按位清零 数字1 &^ 数字2
        • 数字2的位为1,数字1的位就是0
  • Go循环

    • 1.for循环不需要使用括号
    • 2.while循环用for循环实现
      • //循环五次
        n:=0
        for n<5{
          n++
        }
        // 无限循环
        for{
        }

  • Go条件IF

    • go的if支持赋值(条件后面是一个分号)
    • 可以用来判断多返回值,是否有错误
      • if v,err:= isConnection(); err!=nil{
        // 条件后面是一个分号
        
        }

  • Go条件switch

    • 可以判断任意类型
    • case 可以放入多个元素,用,分割条件
    • 默认带有break
    • 可以不设定条件表达式
  • Go函数定义

    • 格式:
      • func 函数名([参数列表..]) [返回参数]{
             //返回多个值用()
          //函数参数分为值传递,和引用传递
          //支持传递函数作为变量
          函数体
        }

  • Go的数组(大括号,…)

    • 容量不可伸缩
    • 声明 var a [3]int
      • 明并初始化默认值
      • […] 可以自动推导数组有多少元素
    • 读取 赋值 a[0] = 1
    • 声明并赋值 c:=[3]int{1,2,3}
    • 添加元素 s = append(s,1)
    • 存储空间扩展
      • 如果空间不够了,就是以前的空间x2
  • Go的切片

    • 容量可以伸缩,类似一个结构体,len,cap,不可比较
    • 定义切片 s: = a [5] int {1,2,3,4,5}
    • 和python差不多,但是不支持负索引,步长
    • 包含开始索引,不包含结束索引
  • Map 声明

    • map[类型] int{‘one’:1,…}
    • m1:=map[类型]int{}
    • m1[‘one’] =1
    • m2 := make(map[string]int,10)
    • 解决不存在的值为0,空值
  • 4.扩展延伸知识

    • python中 a[‘key’]

      • 执行a的__getitem__方法
    • python 推导式

      • 可以多个for循环嵌套
        • lists = [(i, j) for i in range(10)
                   for j in range(10, 20)]
          print(lists)

    • python 测试文件
    • go 变量定义 :的作用
    • go _ 下划线的特殊作用
      • 做一个占位,并不关心变量的值
    • go len,cap,make函数
    • go中的关键字 iota
      • iota,特殊常量,可以认为是一个可以被编译器修改的常量。
      • iota 出现第一次是0,第二次是1,在const中可以简写,只写在第一行
        • const (
              a = iota
              b = iota
              c = iota
          )
          const (
              a = iota
              b
              c
          )

    5.知识内容个人梳理

    6.今天都复习了之前的什么内容