• 结构体

    结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
    定义一个结构体:

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

    一旦定义了结构体类型,它就能用于变量的声明,语法格式如下:

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

    使用结构体:

    package main
    import "fmt"
    type Person struct {
       name string
       age int
       sex string
       blog string
    }
    func main() {
       var zrdn Person        /* 声明 zrdn 为 Person 类型 */
       /* book 1 描述 */
       zrdn.name = "昨日当年"
       zrdn.age = 18
       zrdn.sex = "male"
       zrdn.blog = "http://zuoridangnian.com"
       /* 打印 zrdn 信息 */
       fmt.Printf( "zrdn'name : %s\n", zrdn.name)
       fmt.Printf( "zrdn'age : %s\n", zrdn.age)
       fmt.Printf( "zrdn'sex : %s\n", zrdn.sex)
       fmt.Printf( "zrdn'blog : %d\n", zrdn.blog)
    }
    

    感觉一个结构体和一个对象有点像,里面的数据就像是对应的属性。

    切片(Slice)

    Go的切片类型为处理同类型数据序列提供一个方便而高效的方式。 切片有些类似于其他语言(例如JS)中的数组,但是有一些不同寻常的特性。
    在Go语言中,数组是固定长度的,而切片的长度不是固定的,可以追加元素。
    声明一个切片:

    var identifier []type
    

    例如定义一个字符串切片

    letters := []string{"a", "b", "c", "d"}
    

    或使用内置的 make() 函数来创建切片

    slice1 := make([]T, length, capacity)
    
    • T 为 type,代表被创建的切片元素的类型
    • length 是数组的长度并且也是切片的初始长度。
    • capacity 为可选参数,说明切片可达到的最大数。

    例如:

    s := make([]byte, 5)
    

    可以使用内置函数 len 和 cap 获取切片的长度和容量信息。

    len(s) == 5
    cap(s) == 5
    

    初始化的切片的值为 nil 。对于切片的零值, len 和 cap 都将返回0。

    len 和 cap

    • 切片是可索引的, len() 方法用于获取其长度
    • cap() 方法可以测量切片最长可以达到多少

    例子:

    package main
    import "fmt"
    func main() {
       var numbers = make([]int,3,5)
       printSlice(numbers)
    }
    func printSlice(x []int){
       fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
    }
    

    结果:

    len=3 cap=5 slice=[0 0 0]