GO语言基础教程7——数组

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

GO语言基础教程7——数组


GO语言基础教程7——数组


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

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


数组定义

var 数组变量名 [元素数量]数据类型

注意:数组的长度必须为常量,且长度为数据类型的一部分。


举个例子:

var a [3]int
var b [4]int
a = b 
//不可以这样做,因为此时a和b是不同的类型
/a的数据类型为[3]int,b的数据类型为[4]int,因此不能直接操作

数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1


数组的初始化


数组的初始化也有很多方式。


方法一


确定长度时对数组初始化。

func main() {
    var arr = [3]int
    var arr1 = [2]string{"likuis","ok"}
    fmt.println(arr) // 0 0 0
    fmt.println(arr1) // likuis ok
}

方法二


编译器自动识别长度对数组初始化。

func main() {
    var arr = [...]int
    var arr1 = [...]string{"likuis","ok"}
    fmt.println(arr) // 空
    fmt.println(arr1) // likuis ok
}

方法三


可以通过索引值来对数组初始化。

func main() {
    var arr = [...]int{1:1,3:3}
    fmt.println(arr) // 0 1 0 3
}


数组遍历


遍历数组a有以下两种方法:

func main() {
  var a = [...]string{"likuis", "good", "ok"}
  // 方法1:for循环遍历
  for i := 0; i < len(a); i++ {
    fmt.Println(i,a[i])
  }
  // 方法2:for range遍历
  for index, value := range a {
    fmt.Println(index, value)
  }
        //输出:
        //1 likuis
        //2 good
        //3 ok
}


多维数组


Go语言是支持多维数组的,以二维数组为例(数组中又嵌套数组)。


二维数组定义

func main() {
  a := [3][2]string{
    {"likuis", "good"},
    {"tom", "good"},
    {"yomi", "bad"},
  }
  fmt.Println(a) //[[likuis good] [tom good] [yomo bad]]
  fmt.Println(a[2][1]) //支持索引取值:yomi
}

二维数组遍历

func main() {
  a := [3][2]string{
    {"likuis", "good"},
    {"tom", "good"},
    {"yomi", "bad"},
  }
  for _,value := range a {
            for _,value1 := range value {
                fmt.print(value1)
            }
            fmt.println()
        }
}
//输出:
//likuis good
//tom good
//yomi bad

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


例如:

//支持的写法
a := [...][2]string{
  {"likuis", "good"},
        {"tom", "good"},
  {"yomi", "bad"},
}
//不支持多维数组的内层使用...
b := [3][...]string{
  {"likuis", "good"},
        {"tom", "good"},
  {"yomi", "bad"},
}


课后练习


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

相关文章
|
5天前
|
Go
go语言map、实现set
go语言map、实现set
12 0
|
5天前
|
Go
go语言数组与切片
go语言数组与切片
14 0
|
1天前
|
JSON 算法 测试技术
在go语言中调试程序
【6月更文挑战第29天】Go语言内置`testing`包支持单元测试、基准测试和模糊测试。`go test`命令可执行测试,如`-run`选择特定测试,`-bench`运行基准测试,`-fuzz`进行模糊测试。
12 2
在go语言中调试程序
|
7天前
|
存储 中间件 Go
在go语言服务中封装路由和示例
【6月更文挑战第23天】本文介绍golang后端按协议处理、中间件(一次性与每次请求执行)划分、以及服务架构Controller、Logic/Service、DAO/Repository和Routers划分。代码仓库在GitHub上提供。使用框架简化了交互和处理。后续章节深入探讨服务构建。
105 5
在go语言服务中封装路由和示例
|
4天前
|
Devops Go 云计算
Go语言发展现状:历史、应用、优势与挑战
Go语言发展现状:历史、应用、优势与挑战
|
5天前
|
Go
go语言的hello,world
go语言的hello,world
10 1
|
3天前
|
编译器 Go C++
必知的技术知识:go语言快速入门教程
必知的技术知识:go语言快速入门教程
|
4天前
|
编译器 Go 开发者
|
5天前
|
Java Go Windows
go语言实现加减法出题器(再也不用担心孩子学习了)
go语言实现加减法出题器(再也不用担心孩子学习了)
10 0
|
8天前
|
安全 测试技术 Go
Go语言在高并发场景下的应用
在当今互联网高速发展的时代,高并发已成为众多应用系统面临的核心问题。本文探讨了Go语言在高并发场景下的优势,并通过具体实例展示了其在实际应用中的效果和性能表现。