美文网首页
go 数据类型

go 数据类型

作者: Stevenzwzhai | 来源:发表于2020-03-04 14:34 被阅读0次

    基本数据类型
    符合类型:array slice map function pointer struct interface channel
    布尔型:bool true/false fmt.Printf("%T, %t", )
    数值: int、float32、float64 complex(复数)
    字符串 string
    派生类型
    (a) 指针类型(Pointer)
    (b) 数组类型
    (c) 结构化类型(struct)
    (d) Channel 类型
    (e) 函数类型
    (f) 切片类型
    (g) 接口类型(interface)
    (h) Map 类型

    数组和切片的区分,主要在于是否确定长度
    var variable_name [SIZE] variable_type
    传递参数 func getArr(param [10] int)
    切片 var identifier []type 不需要定义长度
    slice1 := make([]type, len) 使用make关键字
    s :=[] int {1,2,3 }
    数组转切片 var balance [10] float32
    var balance1 [5]int{1, 2, 3, 4, 5}
    定义确定长度两种方式,一种是定义的时候直接设置长度,另一种是定义并初始化时确定长度
    var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
    var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
    var b = balance[1:3]

    整形、浮点型默认0
    字符串: ""

    iota
    特殊的常量
    ota 可以被用作枚举值:

    const (
        a = iota
        b = iota
        c = iota
    )
    

    第一个 iota 等于 0,每当 iota 在新的一行被使用时,它的值都会自动加 1;所以 a=0, b=1, c=2
    注意点:

    1. 如果中断iota自增,则必须显式恢复。且后续自增值按行序递增
    2. 自增默认是int类型,可以自行进行显示指定类型
    3. 数字常量不会分配存储空间,无须像变量那样通过内存寻址来取值,因此无法获取地址

    结构体类型

    数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型,结构体有普通结构体和指针结构体。
    普通结构体的定义和初始化

    type struct_variable_type struct {
       member definition;
       member definition;
       ...
       member definition;
    }
    

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

    variable_name := structure_variable_type {value1, value2...valuen}
    

    初始化结构体

    // 1.按照顺序提供初始化值
    P := person{"Tom", 25}
    // 2.通过field:value的方式初始化,这样可以任意顺序
    P := person{age:24, name:"Tom"}
    // 3.new方式,未设置初始值的,会赋予类型的默认初始值
    p := new(person)
    p.age=24
    

    结构体指针

    var struct_pointer *Books
    

    以上定义的指针变量可以存储结构体变量的地址。查看结构体变量地址,可以将 & 符号放置于结构体变量前

    struct_pointer = &Book1;
    

    使用结构体指针访问结构体成员,使用 "." 操作符

    相关文章

      网友评论

          本文标题:go 数据类型

          本文链接:https://www.haomeiwen.com/subject/ymcsthtx.html