Adminxe's Blog | 低调求发展 - 潜心习安全 ,技术永无止境 | 谢谢您对本站的支持,有什么问题或者建议请及时联系:点击这里给我发消息

GO语言学习–数组

安全开发 MoCo, MoCo 103℃ 0评论

数组(瓶子)是同一种数据类型元素(水)的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:

var 数组变量名 [元素数量]T

例子:

// 定义一个长度为3元素类型为int的数组a

var a [3]int

数组定义

1、存放元素的容器

2、必须指定存放的元素的类型和容量(长度)

3、数组的长度是数组类型的一部分

package main

 
import "fmt"


//数组

//存放元素的容器

//必须指定存放的元素的类型和容量(长度)

//数组的长度是数组类型的一部分

func main() {

  var a1 [3]bool // [true false true]

  var a2 [4]bool // [true true false false]

 

  fmt.Printf("a1:%T a2:%T", a1, a2)

}

数组的初始化

package main

 

import "fmt"

 
//数组

 
//存放元素的容器

//必须指定存放的元素的类型和容量(长度)

//数组的长度是数组类型的一部分

func main() {

  var a1 [3]bool // [true false true]

  var a2 [4]bool // [true true false false]

 

fmt.Printf("a1:%T a2:%T\n", a1, a2)

//数组的初始化

  //如果不初始化,默认元素都是零值(布尔值:false,整型和浮点型都是0,字符串:"")

  fmt.Println(a1, a2)

  //方式1

  a1 = [3]bool{true, true, true}

  fmt.Println(a1)

  //方式2

  //根据初始值自动推断数组的长度是多少

  a10 := [...]int{1, 2, 3, 4, 5, 6, 7, 8, 9}

  fmt.Println(a10)

  //方式3

  //根据索引来初始化

  a3 := [5]int{0: 1, 4: 2}

  fmt.Println(a3)

}

数组的遍历

package main

 

import "fmt"

 

//数组


//存放元素的容器

//必须指定存放的元素的类型和容量(长度)

//数组的长度是数组类型的一部分

func main() {

  

  //数组的遍历

  citys := [...]string{"北京", "上海", "深圳"}

 

  //根据索引遍历

  for i := 0; i < len(citys); i++ {

​    fmt.Println(citys[i])

  }

  //for range遍历

  for i, v := range citys {

​    fmt.Println(i, v)

  }

}

多维数组

package main

 

import "fmt" 

func main() {

  

  //多位数组

  //[[1,2][3,4][5,6]]

  var a11 [3][2]int

  a11 = [3][2]int{

​    {1, 2},

​    {3, 4},

​    {5, 6},

  }

  fmt.Println(a11)

 

  //多维数组的遍历

  for _, v1 := range a11 {

​    fmt.Println(v1)

​    for _, v2 := range v1 {

​      fmt.Println(v2)

​    }

  }

}

注意: 多维数组只有第一层可以使用...来让编译器推导数组长度。

数组是值类型

值类型: 也就是Ctrl+c   Ctrl+v  赋值和传参会复制整个数组   就像是把word文档从文件夹a拷贝到文件夹b

package main

 

import "fmt"

 

func main() {

  

  //数组是值类型

  //值类型: 也就是Ctrl+c  Ctrl+v  赋值和传参会复制整个数组  就像是把word文档从文件夹a拷贝到文件夹b

  b1 := [3]int{1, 2, 3} // [1 2 3]

  b2 := b1        // [1 2 3]  Ctrl+c  Ctrl+v

  b2[0] = 100      // b2: [100 2 3]

  fmt.Println(b1, b2)  //b1:?

}

注意

  1. 数组支持 “==“、”!=” 操作符,因为内存总是被初始化过的。
  2. [n]*T表示指针数组,*[n]T表示数组指针 。

练习

package main

import "fmt"

//array数组练习题
//1、求数组[1, 3, 5, 7, 8]所有元素的和
//2、找出数组中和为指定值的两个元素的下标,比如从数组[1, 3, 5, 7, 8]中找出和为8的两个元素的下标分别为(0,3)和(1,2)。

func main() {
	// 1.求数组[1, 3, 5, 7, 8]所有元素的和
	a1 := [...]int{1, 3, 5, 7, 8}
	//把数组中的每一个元素遍历出来,累加到一个宿命变量就可以了
	sum := 0
	for _, v := range a1 {
		sum = sum + v
		fmt.Println(sum)
	}
	fmt.Println(sum)

	//2、找出和为8的两个元素的下标分别为(0,3)和(1,2)。
	//定义两个for循环,外层的从第一个开始遍历
	//内层的for循环从外层后面的哪个开始找
	//他们两个的和为8
	for i := 0; i < len(a1); i++ {
		for j := i + 1; j < len(a1); j++ {
			if a1[i]+a1[j] == 8 {
				fmt.Printf("(%d,%d)\n", i, j)
			}
		}

	}

}

参考链接

https://www.liwenzhou.com/posts/Go/05_array/

转载请注明:Adminxe's Blog » GO语言学习–数组

喜欢 (1)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址