2020.6.25 Go

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


1.复习内容

2.灵感代办

3.学习内容

  • python 模块 collections

    • 简介
      • collections在python 原有基础上添加了 namedtuple,deque,counter,orderedDict,defaultdict
        • namedtuple 命名元组
        • deque 双端队列
        • counter 计数器
        • orderedDict 有序字典
        • defaultdict 带有默认值的字典
  • Go语言初步学习

    • go最不习惯的地方

      • 定义变量未使用是一个错误
      • go中是按照一行为单位,python是按缩进为单位
    • go的介绍

      • go的关键字很少
    • 编译go文件

      • go build 文件名
    • Go的基本结构

      • 程序的入口
        • 1.必须是main包 package main
        • 2.方法是main方法 func main(){}
      • go文件的结构
        • 需要指定包名,就是文件夹的目录
        • 变量,常量
        • 函数
    • go返回值

      • main中不能有返回值
      • 通过os.Exit() 来返回一个状态
    • 测试文件

      • 以_test 结尾:xxx_test.go
      • 测试方法名 开始Test: func Testxxx(t *testing.T){}
    • 定义变量

      • 三种定义变量的方式
        • 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.今天都复习了之前的什么内容


Ares个人进阶之路