开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:数组注意事项和细节(1)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9630
数组注意事项和细节(1)
一、数组注意事项和细节
1.数组使用注意事项和细节
(1) 数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化。
//相同类型:如果定义了一个数组为 int 类型,那么它只能存放 int,比如为 int32,则只能存 int32类型的数据
//数组的长度本身是数据类型的一部分,如果长度一但确定,则不能动态增长
(2) 案例:
新建一个文件夹为 arraydetails,再新建一个文件为 main.go
package main
import (
"fmt"
)
func main(){ //定义一个组函数
//数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化。
(3) 例子:
var arr01 [3]int //定义一个数组,存放三个数据,类型是int。
arr01[0]=1 //第一个元素值为1
arr01[1]= 30 //第二个元素值为30
//arr01[2]=1.1 //第三个元素值为1.1
//注意:这里会报错,因为数据类型定义的是int类型,所以不能赋予值为小数,数据类型不匹配
arr01[2]=90
//其长度是固定的,不能动态变化,否则报越界
arr01[3]=890 //注意:由于定义的是三个元素的数组,如果定义的4个元素,就会超过数组的范围,从而报错
fmt.Println(arr01) //打印并输出数组
(4) var arr []int 这时 arr 就是一个 slice 切片,切片后面专门讲解。
//go 语言中[]需要写大小
(5) 数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不能混用。
//数组中int既可以是基本数据类型也可以是引用类型
//不能混用:数组中定义的是什么类型,就只能包含这个类型的数据,就不可以又使用 int,又使用 float
(6) 数组创建后,如果没有赋值,有默认值(零值)
//数组创建以后如果没有进行赋值,其实元素有默认值,这个默认值就是零值
数值类型数组:默认值为0 //如果数组为 int 或者 float 类型,则默认值为0
字符串数组:默认值为“” //如果数组为字符串类型,默认值为空串
Bool 数组:默认值为 false //如果数组为布尔类型,默认值为 false
(7) 案例:
①数值(整数系列,浮点数系列)=>0
②宇符串==>“”
③布尔类型==> false
var arr01 [3]float32
var arr02 [3]string
var arr03 [3]bool
fmt.Printf( "arr01=%v arr02=%v arr03=%v\n", arr01,arr02,arr03) //打印三个数组
//直接使用数组输出,就会找到数组的首地址,然后把整个数组的数据输出出来
运行结果如下:
arr01=[0 0 0] arr02=[ ] arr3=[false false false false]
(8) 使用数组的步骤
①声明数组并开辟空间 //在定义数组的时候,数据空间就已经被分配了
②给数组各个元素赋值 //如果不赋值则默认为零值
③使用数组 //通过下标访问数组的各个元素
(9) 数组的下标是从0开始的。
(10) 数组下标必须在指定范围内使用,否则报 panic。数组越界
比如
var arr [5]int则有效下标为0-4
(11) Go 的数组属值类型,在默认情况下是值传递,因此会进行值拷贝。数组间不会相互影响
(12) 如想在其它函数中,去修改原来的数组,可以使用引用传递(指针方式)