前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GO语言基础之数组

GO语言基础之数组

原创
作者头像
墨紫羽墨
发布2022-02-27 21:26:22
3150
发布2022-02-27 21:26:22
举报
文章被收录于专栏:FutureTesterFutureTester

一、数组

1、数组是具有相同唯一类型的一组已编号且长度固定的数据项序列。 2、数组长度必须是常量。一旦定义,长度不能变。 3、数组可以通过下标进行访问,第一个元素索引为 0,第二个索引为 1,最后一个元素索引是:len-1 4、数组是值类型,赋值和传参会复制整个数组,而不是指针。因此改变副本的值,不会改变本身的值。

1、数组的声明

代码语言:javascript
复制
package main

import (
    "fmt"
)

func main() {
    var a [3]int // 声明了一个长度为 3 的整型数组。
    fmt.Println(a)
}

数组中的所有元素都被自动赋值为数组类型的零值。a是一个整型数组,因此a的所有元素都被赋值为0,即 int 型的零值。运行上述程序将输出[0 0 0]

2、初始化

代码语言:javascript
复制
func test01() {
	var a [3]int //int array with length 3
	fmt.Println(a)
	a[0] = 2
	a[1] = 6
	fmt.Println(a)
}

运行后输出结果可以看到被赋值的两个元素都是有值的,未被赋值的元素依然还是 0

3、简略声明

代码语言:javascript
复制
func test02() {
	var arr0 [5]int = [5]int{1, 2, 3}
	var arr1 = [5]int{1, 2, 3, 4, 5}
	var arr2 = [...]int{1, 2, 3, 4, 5, 6}
	var str = [5]string{3: "hello world", 4: "tom"}

	a := [3]int{1, 2}           // 未初始化元素值为 0。
	b := [...]int{1, 2, 3, 4}   // 通过初始化值确定数组长度。
	c := [5]int{2: 100, 4: 200} // 使用引号初始化元素。
	d := [...]struct {
		name string
		age  uint8
	}{
		{"user1", 10}, // 可省略元素类型。
		{"user2", 20}, // 别忘了最后一行的逗号。
	}
	fmt.Println("arr0:", arr0)
	fmt.Println("arr1:", arr1)
	fmt.Println("arr2:", arr2)
	fmt.Println("str:", str)
	fmt.Println("a", a)
	fmt.Println("b", b)
	fmt.Println("c", c)
	fmt.Println("d", d)
}

运行结果:

4、访问数组元素

代码语言:javascript
复制
func test03() {
	var n [10]int /* n 是一个长度为 10 的数组 */
	var i, j int

	/* 为数组 n 初始化元素 */
	for i = 0; i < 10; i++ {
		n[i] = i + 100 /* 设置元素为 i + 100 */
	}

	/* 输出每个数组元素的值 */
	for j = 0; j < 10; j++ {
		fmt.Printf("Element[%d] = %d\n", j, n[j])
	}
}

运行结果:

数组的大小是类型的一部分。因此[5]int[25]int是不同类型。

代码语言:javascript
复制
func test04() {
	a := [3]int{5, 78, 8}
	var b [5]int
	b = a
}

我们将类型[3]int的变量赋给类型为[5]int的变量,这是不允许的,因此编译器将抛出错误

array\main.go:59:4: cannot use a (type [3]int) as type [5]int in assignment

5、多维数组

代码语言:javascript
复制
func test05() {
	var arr0 [5][3]int
	var arr1 [2][3]int = [...][3]int{{1, 2, 3}, {7, 8, 9}}

	a := [2][3]int{{1, 2, 3}, {4, 5, 6}}
	b := [...][2]int{{1, 1}, {2, 2}, {3, 3}} // 第 2 纬度不能用 "..."。
	fmt.Println("arr0:", arr0, "\narr1:", arr1)
	fmt.Println("a:", a, "\nb:", b)
}

运行结果:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、数组
    • 1、数组的声明
      • 2、初始化
        • 3、简略声明
          • 4、访问数组元素
            • 5、多维数组
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档