1>. 基本数据结构(类型)

  1. [基本概念 - 程序结构]
  2. :命令、声明
  3. :变量、常量
  4. :赋值
  5. :类型
  6. :包、文件
  7. :作用域
  8. [基础数据类型 - 数值类型,逻辑类型,字符类型 => 数据类型用于声明函数和变量]
  9. :整型
  10. :浮点数
  11. :复数
  12. :布尔型
  13. :字符串
  14. :常量
  15. [数据类型 分类]
  16. :基础类型 => 数字、字符串、布尔类型
  17. :复合类型 => 数组、结构体 [通过组合简单类型, 来表达更加复杂的数据结构]
  18. :引用类型 => 指针、切片、字典、函数、通道 [对程序中一个变量或状态的间接引用]
  19. :接口类型
[基础类型]

    :数值类型 => 整形数、浮点数、复数 [大小范围和正负符号]

    => 整形 , 有符号和无符号 [int8 int16 int 32 int64] [uint8 uint16 uint32 uint64] [int uint]

      => Unicode字符 rune 类型 , int32等价

      => byte 和 uint8 等价, byte 用于强调数值是院士数据

      => uintptr 无符号整型 [常用于底层编成]

    => 浮点数, float32 、float64

    => 复数 , complex64 、 complex128 [real() 实部、imag()虚部]

    :布尔类型 true 、alse

  :字符串, 不可变字节序列,[len() 返回字符串字节树木]

[复合数据类型]

    :数组 , 固定长度的特定类型元素组成的序列

  :Slice 切片 , 可以动态增长和收缩的特定类型元素组成的序列

        => 构成部分 : 指针 (pointer)、长度 (length)、容量 (capacity)

    => len() 长度、cap() 容量

    => 切片操作 , s[i:j] , 0<=i<=j<=cap(s) , 创建新的slice

  :Map 字典 ,哈希表, 无序的key/value对的几何

    => map[K]V
    => make(map[string]int)
    =>  map[string]int{} # 创建空map
    => map[string]int{"key":value}

  :结构体 ,聚合数据类型, 多个任意类型的值(成员)聚合成的实体

    => 结构体成员可以通过点操作副访问, 成员名首字母大写,则成员是导出的

    => type StructTypeName struct{
      Name  valueType
    }
    => var StructTypeName varName

  :JSON

  :模板 [文本和HTML]
[布尔型]

    布尔型的值只可以是常量 true 或者 false

[数值类型]

    Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码

[字符串类型]

    字符串就是一串固定长度的字符连接起来的字符序列, Go的字符串是由单个字节连接起来的

    Go语言的字符串的字节使用UTF-8编码标识Unicode文本

[派生类型]

    指针类型(Pointer)

    数组类型

    结构化类型(struct)

    Channel 类型

    函数类型

    切片类型

    接口类型(interface)

    Map 类型
[数值类型]

    1    uint8     无符号 8 位整型 (0 到 255)
    2    uint16    无符号 16 位整型 (0 到 65535)
    3    uint32    无符号 32 位整型 (0 到 4294967295)
    4    uint64    无符号 64 位整型 (0 到 18446744073709551615)
    5    int8      有符号 8 位整型 (-128 到 127)
    6    int16     有符号 16 位整型 (-32768 到 32767)
    7    int32     有符号 32 位整型 (-2147483648 到 2147483647)
    8    int64     有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

    1    float32    IEEE-754 32位浮点型数
    2    float64    IEEE-754 64位浮点型数
    3    complex64x 32 位实数和虚数
    4    complex128 64 位实数和虚数

    1    byte    类似 uint8
    2    runex   类似 int32
    3    uint    32 或 64 位
    4    int     与 uint 一样大小
    5    uintptrx 无符号整型,用于存放一个指针

2>. 高级数据结构 - 数组、指针、结构体、切片、范围、集合

-> 具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型

[数组声明]

    : var variable_name [SIZE] variable_type

[数组初始化]

    : var variable_name = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

[数组使用]

    : 数组元素可以通过索引(位置)来读取

-> 指针 ,取地址符 &,放到一个变量前使用就会返回相应变量的内存地址,指针变量指向了一个值的内存地址

-> 结构体 ,一旦定义了结构体类型,它就能用于变量的声明

[结构体定义]

    : Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型

    : struct 语句定义一个新的数据类型,结构体有中有一个或多个成员。type 语句设定了结构体的名称。

    : type struct_variable_type struct {

       member definition;
       member definition;
       ...
       member definition;

    }

 [结构体成员访问]

    : 访问结构体成员,需要使用点号 . 操作符

    : 结构体.成员名

-> 切片(Slice) - 对数组的抽象,切片(“动态数组”), 与数组相比切片的长度是不固定的,可以追加元素

[切片定义]

    : 声明一个未指定大小的数组来定义切片 , 切片不需要说明长度 , 

    : var identifier []type

    : 使用make()函数来创建切片

    : var value_slice1 []type = make([]type, len)

    : value_slice1 := make([]type, len)

 [切片初始化]

    : []表示是切片类型

    : value_slice1 :=[] int {1,2,3} 

    : 切片是可索引的,并且可以由 len() 方法获取长度

    : 切片提供了计算容量的方法 cap() 可以测量切片最长可以达到多少

-> 范围(Range)

-> 集合(Map)