在编程中,存储数据是非常重要的一环。Go 语言提供了数组和打包两种常见的数据存储方式。本文将介绍这两种存储方式的使用方法和注意事项。
一、数组
数组是一组相同类型的数据的集合。在 Go 语言中,数组的声明方式如下:
var a [5]int //声明一个包含5个int类型元素的数组
数组的下标从0开始。通过下标访问数组元素:
a[0] = 1
a[1] = 2
数组的长度是固定的,不能动态改变。如果需要动态改变长度,可以使用切片。
数组的初始化可以通过以下方式:
var a = [5]int{1, 2, 3, 4, 5} //声明一个包含5个int类型元素的数组,并初始化
也可以省略长度,让编译器自动计算长度:
var a = [...]int{1, 2, 3, 4, 5} //声明一个包含5个int类型元素的数组,并初始化
数组是值类型,传递给函数时会复制一份。如果需要在函数中修改数组的值,可以传递指针。
下面是一个数组的示例代码:
package main
import "fmt"
func main() {
var a [5]int
fmt.Println("emp:", a)
a[4] = 100
fmt.Println("set:", a)
fmt.Println("get:", a[4])
fmt.Println("len:", len(a))
b := [5]int{1, 2, 3, 4, 5}
fmt.Println("dcl:", b)
c := [...]int{1, 2, 3, 4, 5}
fmt.Println("dcl:", c)
var twoD [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}
输出结果:
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
dcl: [1 2 3 4 5]
2d: [[0 1 2] [1 2 3]]
二、打包
打包是将多个不同类型的变量组合成一个新的变量。在 Go 语言中,可以使用结构体实现打包。
结构体是一种自定义数据类型,可以包含多个字段。结构体的声明方式如下:
type Person struct {
name string
age int
}
在结构体中,每个字段都有自己的类型和名称。可以通过点号访问结构体中的字段:
p := Person{name: "Bob", age: 20}
fmt.Println(p.name)
结构体的初始化可以通过以下方式:
p := Person{name: "Bob", age: 20}
也可以省略字段名:
p := Person{"Bob", 20}
结构体是值类型,传递给函数时会复制一份。如果需要在函数中修改结构体的值,可以传递指针。
下面是一个结构体的示例代码:
package main
import "fmt"
type Person struct {
name string
age int
}
func main() {
fmt.Println(Person{"Bob", 20})
fmt.Println(Person{name: "Alice", age: 30})
fmt.Println(Person{name: "Fred"})
fmt.Println(&Person{name: "Ann", age: 40})
s := Person{name: "Sean", age: 50}
fmt.Println(s.name)
sp := &s
fmt.Println(sp.age)
sp.age = 51
fmt.Println(sp.age)
}
输出结果:
{Bob 20}
{Alice 30}
{Fred 0}
&{Ann 40}
Sean
50
51
总结
本文介绍了 Go 语言中数组和打包的使用方法和注意事项。数组是一组相同类型的数据的集合,长度固定;打包是将多个不同类型的变量组合成一个新的变量,长度不固定。在实际编程中,需要根据具体情况选择合适的存储方式。