跳转至

复杂类型

标识符命名注意事项
  • 1)包名:保持package的名宇和目录保持一致,尽量采取有意义的包名,简短,有意义,不要和标准库不要冲突
  • 2)变量名、函数名、常量名:采用驼峰法。
  • 3)如果变量名、函数名、常量名 首字母大写,则可以被其他的包访问;如果首字母小写,则只能在本包中使用(注:可以简单的理解成,首字母大写是公有的,首字母小写是私有的)
预定义标识符
  • 除了保留关键字外,Go还提供了36个预定的标识符,其包括基础数据类型和系统内嵌函数
  • append complex64 float64 int32 nil recover bool complex128
  • imag int64 panic string byte uint16 int iota uint64 true
  • cap copy int8 len print uint close false int16 make
  • println uint8 complex float32 uint32 new real uintprt

point 指针类型

  • 操作内存地址,在不改变内存地址的情况下更改内容

img.png

package main
import (
    "fmt"
)

//演示golang中指针类型
func main() {

    //基本数据类型在内存布局
    var i int = 10
    // i 的地址是什么,&i
    fmt.Println("i的地址=", &i)

    //下面的 var ptr *int = &i
    //1. ptr 是一个指针变量
    //2. ptr 的类型 *int
    //3. ptr 本身的值&i
    var ptr *int = &i 
    fmt.Printf("ptr=%v\n", ptr)
    fmt.Printf("ptr 的地址=%v", &ptr) 
    fmt.Printf("ptr 指向的值=%v", *ptr)
    // 定义一个 int 变量 num 并打印到终端,并将其地址赋值给指针 ptr ,并通过 ptr 去修改 num 的值
    var num int = 9
    fmt.Printf("num address=%v\n", &num)

    var ptr *int 
    ptr = &num
    *ptr = 10 //这里修改时,会到num的值变化
    fmt.Println("num =" , num)
    var a_b int = 20
    fmt.Println(a_b)

    var int int = 30
    fmt.Println(int)
}

slice 切片类型

map 哈希表类型(键值对)

interface 接口类型

chan 管道类型