数组

go语言提供了数组类型的数据结构 是一个固定长度的集合,可以通过索引来读取数据

数组的声明与使用

  1. 表达式
  2. var 数组名称 [数组大小]数组类型
  3. 1.初始化赋值
  4. var numbers = [5]int{1, 2, 3, 4, 5}
  5. 2.长度不确定的时候
  6. //我们可以通过...去代替数组长度
  7. var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
  8. 3.指定下标去初始化元素
  9. balance := [5]float32{1:2.0,3:7.0}
Copy

指针

其实我们平时在程序中的每一个值在内存中都会有对应的地址,这个地址被称之为内存地址,我们可以把我们的值想象成一个房子,而内存地址就是这个房子的门牌号 指针变量 :指向值的内存地址 在go中要取到内存地址是非常简单的,仅仅只需要一个符号就可以获取到对应的地址:&
  1. package main
  2. import "fmt"
  3. func main() {
  4. var a int = 10
  5. fmt.Printf("变量的地址: %x\n", &a )
  6. }
Copy

指针变量的声明

  1. 声明格式
  2. var 名称 *类型
  3. ex:
  4. var ip *int
Copy 作用:可以在函数传参的时候作为引用传递进行传递,可以达到节省空间的作用 引用传递:只传递内存地址,而不是将值复制一份在进行传递 例子:
  1. package main
  2. import "fmt"
  3. func main() {
  4. a := 1
  5. b := 2
  6. fmt.Println(&a)
  7. fmt.Println(&b)
  8. Test(a, &b)
  9. }
  10. func Test(a int, b *int) {
  11. fmt.Println(&a)
  12. fmt.Println(*b)
  13. }
Copy

结构体

结构体:由一系列具有相同类型或不同类型的数据构成的数据集合。 我们可以将结构体理解成一个箱子,然后我们准备在这个箱子中放很多水果,我们预定这个位置放苹果,另外一个位置放梨,另另外一个位置放桃子,注意是先预定位置,而不是真正的放入水果 当我们程序走到某个地方之后,我们需要创建对应的结构体实例之后,这个结构体才能被真正的使用起来(也就是等于真正的放了水果进去) 例子:
  1. package main
  2. import "fmt"
  3. //定义一个箱子
  4. type Fruit struct {
  5. apple int
  6. pear string
  7. peach [1]string
  8. }
  9. func main() {
  10. p := [1]string{
  11. "test",
  12. }
  13. //放入水果
  14. fruit := Fruit{
  15. 1, "test", p,
  16. }
  17. //使用
  18. fmt.Println(fruit.pear)
  19. fmt.Println(fruit.apple)
  20. fmt.Println(fruit.peach[0])
  21. }