Go语言入门学习(五)——结构体与切片(slice)

结构体

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

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]