Go语言-数组类型

一个数组(Array)就是一个可以容纳若干类型相同的元素的容器。这个容器的大小(即数组的长度)是固定的,且是体现在数组的类型字面量之中的。比如,我们声明了一个数组类型:

type MyNumbers [3]int

注:类型声明语句由关键字type、类型名称和类型字面量组成。

所谓类型字面量,就是用于表示某个类型的字面表示(或称标记方法)。相对的,用于表示某个类型的值的字面表示可被称为值字面量,或简称为字面量。比如之前提到过的3.7E-2就可被称为浮点数字面量。 类型字面量[3]int由两部分组成。第一部分是由方括号包裹的数组长度,即[3]。这也意味着,一个数组的长度是该数组的类型的组成部分,是固定不变的。该类型字面量的第二个组成部分是int。它代表了该数组可以容纳的元素的类型。说到这里,上面这条类型声明语句实际上是为数组类型[3]int声明了一个别名类型。这使得我们可以把MyNumbers当做数组类型[3]int来使用。

我们表示这样一个数组类型的值的时候,应该把该类型的类型字面量写在最左边,然后用花括号包裹该值包含的若干元素。各元素之间以(英文半角)逗号分隔,即:

[3]int{1, 2, 3}    

现在,我们把这个数组字面量赋给一个名为numbers的变量:

var numbers = [3]int{1, 2, 3}

注:这是一条变量声明语句。它在声明变量的同时为该变量赋值。

另一种便捷方法是,在其中的类型字面量中省略代表其长度的数字,像这样:

var numbers = [...]int{1, 2, 3}

这样就可以免去我们为填入那个数字而数出元素个数的工作了。

接下来,我们可以很方便地使用索引表达式来访问该变量的值中的任何一个元素,例如:

numbers[0] // 会得到第一个元素
numbers[1] // 会得到第二个元素
numbers[2] // 会得到第三个元素

注:索引表达式由字符串、数组、切片或字典类型的值(或者代表此类值的变量或常量)和由方括号包裹的索引值组成。在这里,索引值的有效范围是[0, 3)。也就是说,对于数组来说,索引值既不能小于0也不能大于或等于数组值的长度。另外要注意,索引值的最小有效值总是0,而不是1。
  
    相对的,如果我们想修改数组值中的某一个元素值,那么可以使用赋值语句直接达到目的。例如,我们要修改numbers中的第二个元素的话,如此即可:

numbers[1] = 4

虽然数组的长度已经体现在了它的类型字面量,但是我们在很多时候仍然需要明确的获得它,像这样:

var length = len(numbers)

注:len是Go语言的内建函数的名称。该函数用于获取字符串、数组、切片、字典或通道类型的值的长度。我们可以在Go语言源码文件中直接使用它。
  
    最后,要注意,如果我们只声明一个数组类型的变量而不为它赋值,那么该变量的值将会是指定长度的、其中各元素均为元素类型的零值(或称默认值)的数组值。例如,若有这样一个变量:

var numbers2 [5]int

则它的值会是

[5]int{0, 0, 0, 0, 0}

任务

请在命令源码文件index.go的第11行的反引号中填入一个数字,使程序打印到标准输出上的内容为true

package main

import "fmt"

func main() {
var numbers2 []int
numbers2[] =
numbers2[] = numbers2[] -
numbers2[] = numbers2[] +
numbers2[] = len(numbers2)
sum := ()
// “==”用于两个值的相等性判断
fmt.Printf("%v\n", (sum == numbers2[]+numbers2[]+numbers2[]+numbers2[]+numbers2[]))
}

最新文章

  1. Apache thrift RPC 双向通信
  2. jquery遍历选中checkbox的id
  3. html5掷骰子的小demo
  4. silverlight如何通过单独部署的WCF站点访问sharepoint2013的图片库
  5. 【BZOJ-1923】外星千足虫 高斯消元 + xor方程组
  6. 盯盯拍Android App 3.0指导
  7. Wordnet的一些简单使用
  8. 在C中嵌入汇编
  9. linux 安装 Chrome
  10. springMVC两种方式实现多文件上传及效率比较
  11. Vuforia开发完全指南---不懂编程也能做AR程序
  12. 分享基于分布式Http长连接框架--代码模型
  13. Windows上搭建远程访问服务
  14. 基础汇编指令(16bit 32bit 64bit)
  15. [JSOI2008]Blue Mary的战役地图(二分+哈希)
  16. Qt配置cmake;运行带参数的程序
  17. VS项目平台的x86,x64,Any CPU以及Debug和Release
  18. js 加alert后才能执行方法
  19. hdu3294 manacher
  20. Android2.1消息应用(Messaging)

热门文章

  1. Css+Html
  2. 用户 'IIS APPPOOL\**' 登录失败的解决方案(项目部署到本地IIS上打开网页出现报错)
  3. Android 下的 SQLite 操作封装 —— DatabaseUtil
  4. python基础---有关nparray----切片和索引(一)
  5. [拾零]C/C++_代码复用的实现_静态链接库_动态链接库_使用.def导出
  6. static 关键字用法
  7. 初识AutoCompleteTextView
  8. ApexSQL Log中的Redo Script跟原始SQL不一致问题
  9. Angularjs 列表页面筛选
  10. 在.net平台上运行伪JAVA