结构体
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。
定义一个结构体:
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]