数组
go语言提供了数组类型的数据结构 是一个固定长度的集合,可以通过索引来读取数据数组的声明与使用
Copy
表达式
var 数组名称 [数组大小]数组类型
1.初始化赋值
var numbers = [5]int{1, 2, 3, 4, 5}
2.长度不确定的时候
//我们可以通过...去代替数组长度
var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
3.指定下标去初始化元素
balance := [5]float32{1:2.0,3:7.0}
指针
其实我们平时在程序中的每一个值在内存中都会有对应的地址,这个地址被称之为内存地址,我们可以把我们的值想象成一个房子,而内存地址就是这个房子的门牌号 指针变量 :指向值的内存地址 在go中要取到内存地址是非常简单的,仅仅只需要一个符号就可以获取到对应的地址:&Copy
package main
import "fmt"
func main() {
var a int = 10
fmt.Printf("变量的地址: %x\n", &a )
}
指针变量的声明
Copy 作用:可以在函数传参的时候作为引用传递进行传递,可以达到节省空间的作用 引用传递:只传递内存地址,而不是将值复制一份在进行传递 例子:
声明格式
var 名称 *类型
ex:
var ip *int
Copy
package main
import "fmt"
func main() {
a := 1
b := 2
fmt.Println(&a)
fmt.Println(&b)
Test(a, &b)
}
func Test(a int, b *int) {
fmt.Println(&a)
fmt.Println(*b)
}
结构体
结构体:由一系列具有相同类型或不同类型的数据构成的数据集合。 我们可以将结构体理解成一个箱子,然后我们准备在这个箱子中放很多水果,我们预定这个位置放苹果,另外一个位置放梨,另另外一个位置放桃子,注意是先预定位置,而不是真正的放入水果 当我们程序走到某个地方之后,我们需要创建对应的结构体实例之后,这个结构体才能被真正的使用起来(也就是等于真正的放了水果进去) 例子:
package main
import "fmt"
//定义一个箱子
type Fruit struct {
apple int
pear string
peach [1]string
}
func main() {
p := [1]string{
"test",
}
//放入水果
fruit := Fruit{
1, "test", p,
}
//使用
fmt.Println(fruit.pear)
fmt.Println(fruit.apple)
fmt.Println(fruit.peach[0])
}