前序
今天总结的是go语言中的一些数据结构,包括:
- 数组
- 指针
数组
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。
声明数组
Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:
var arrayName [size]dataType
//以下定义了数组 balance 长度为 10 类型为 float32:
var balance [10]float32
初始化数组
//未声明具体数值时,设置为默认值,整数为0
var numbers [5]int
//还可以使用初始化列表来初始化数组的元素
var numbers = [5]int{1, 2, 3, 4, 5}
//或
numbers := [5]int{1, 2, 3, 4, 5}
//如果数组长度不确定,可以使用 ... 代替数组的长度,编译器会根据元素个数自行推断数组的长度
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
//或
balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
访问数组元素
数组元素可以通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。例如:
var salary float32 = balance[9]
指针
一个指针变量指向了一个值的内存地址。类似于变量和常量,在使用指针前你需要声明指针。指针声明格式如下:
var var_name *var-type
var ip *int /* 指向整型*/
var fp *float32 /* 指向浮点型 */
如何使用指针
此处用一个代码实例来解释使用:
package main
import "fmt"
func main() {
var a int= 20 /* 声明实际变量 */
var ip *int /* 声明指针变量 */
ip = &a /* 指针变量的存储地址 */
fmt.Printf("a 变量的地址是: %x\n", &a )
/* 指针变量的存储地址 */
fmt.Printf("ip 变量储存的指针地址: %x\n", ip )
/* 使用指针访问值 */
fmt.Printf("*ip 变量的值: %d\n", *ip )
}