当前位置: 首页 > news >正文

Go语言--语法基础6--基本数据类型--数组类型(1)

Go 语言提供了数组类型的数据结构。
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的
原始类型例如整型、字符串或者自定义类型。相对于去声明number0,number1, ..., and
number99 的变量,使用数组形式 numbers[0], numbers[1] ...,numbers[99]更加方便且
易于扩展。数组元素可以通过索引(位置)来读取(或者修改),索引 从0 开始,
第一个元素索引为 0,第 二个索引为 1,以此类推
使用数组的步骤
1. 声明数组并开辟空间,初始化数组。
2. 给数组各个元素赋值 ( 默认零值 )
3. 使用数组 ==>读数组,写数组

声明数组

Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:
var array_name [SIZE]array_type => var a [10]int
c 语言的数组:
array_type array_name[size]; => int a [10];
以上为一维数组的定义方式。数组长度 SIZE 必须是整数且大于 0
数组的下标是从 0 开始的 , 数组下标必须在指定范围内使用,否则报 panic
数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不能混用。
数组创建后,如果没有赋值,有默认值 ( 零值 )
数值类型数组:默认值为 0 , 字符串数组: 默认值为 "" bool 组: 默认值为 false。
1 、声明数组并开辟空间
// 例如以下定义了数组 f 长度为 10 ,类型为 float32
var f [10] float32
// 定义一个长度为 3 元素类型为 int 的数组 a
var a [3]int
在没有明确内存存储位置的时候,默认在栈区。
其他声明方式:
[32] byte // 长度为 32 的字节数组
[2*N] struct {x, y int32} // 复杂类型数组
[100] *float64 // 指针数组
[3][5] int // 二维数组
[2][2][2] float64 // 等同于 [2]([2]([2]float64))
注意:数组的长度必须是常量,并且长度是数组类型的一部分。 一旦定义,长度不能变。 [5]int 和 [10]int 是不同的类型。
1) 数组的地址可以通过数组名来获取 &intArr
2) 数组的第一个元素的地址,就是数组的首地址
3) 数组的各个元素的地址间隔是依据数组的类型决定,比如 int64 -> 8int32->4...

初始化数组

1
初始化数组时可以使用初始化列表来设置数组元素的值。
func main() {
var testArray [3]int //数组会初始化为int类型的零值
var numArray = [3]int{1,2} //使用指定的初始值完成初始化
var cityArray = [3]string{"Beijing", "Shanghai", "Guangzhou"}
fmt.Println(testArray) //[0 0 0]
fmt.Println(numArray) //[1 2 0]
fmt.Println(cityArray) //[Beijing Shanghai Guangzhou]
}

方法2:
让编译器根据初始值的个数自行推断数组的长度:

func main() {
var testArray [3]int //数组会初始化为int类型的零值
var numArray = [...]int{1, 2} //使用指定的初始值完成初始化
var cityArray = [...]string{"Beijing", "Shanghai", "Guangzhou"}
fmt.Println(testArray) //[0 0 0]
fmt.Println(numArray) //[1 2]
fmt.Printf("type of numArray:%T\n", numArray) //type of
numArray:[2]int
fmt.Println(cityArray) //[Beijing Shanghai
Guangzhou]
fmt.Printf("type of numArray:%T\n", cityArray) //type of numArray:
[3]string
}

方法3:
使用指定索引值的方式初始化数组:

func main() {
a := [...]int{1: 1, 3: 5} //第一个1是下标,第二个1 是值, 3是下
标,5是值
fmt.Println(a) // [0 1 0 5]
fmt.Printf("type of a:%T\n", a) //type of a:[4]int
}

数组赋值

o 语言的数组的赋值,即给定义好的数组指定的索引的位置设置对应的 值。
Go 语言数组赋值语法:
arr[index] = value
给定义好的数组的指定索引位置处赋值
package main
import (
"fmt"
)
func main() {
//给定义好的数组的指定索引位置处赋值
var arrHaiCoder [3]string //定义数组,没有初始化,默认是""
arrHaiCoder[0] = "Hello" //给数组元素赋值
arrHaiCoder[1] = "中华网"
arrHaiCoder[2] = "China"
fmt.Println("arrHaiCoder0 =", arrHaiCoder[0]) //数组元素的输出
fmt.Println("arrHaiCoder1 =", arrHaiCoder[1])
fmt.Println("arrHaiCoder2 =", arrHaiCoder[2])
}
数组重新赋值
数组指定索引的位置有值后,也可以通过索引重新设置值
package main
import (
"fmt"
)
func main() {
//数组指定索引的位置有值后,也可以通过索引重新设置值
var arrHaiCoder = [3]string{"Hello", "中华网", "China"} //初始化列
表初始化数组
arrHaiCoder[2] = "Openlab" //指定修改第三个元素
4/6
5/6
fmt.Println("arrHaiCoder0 =", arrHaiCoder[0])
fmt.Println("arrHaiCoder1 =", arrHaiCoder[1])
fmt.Println("arrHaiCoder2 =", arrHaiCoder[2])
}
注意:数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。 [5]int和[10]int是不同的类型。
var a [3] int
var b [4] int
a = b //不能这样做,因为a和b是不同类型

相关文章:

  • 为OneCode 开发TRea 开发插件,从环境搭建到生态融合
  • 跨域问题说明
  • 开发语言本身只是提供了一种解决问题的工具
  • 给docker 配置代理 IP机端口
  • Java事务失效(面试题)的常见场景
  • Python 商务数据分析—— NumPy 学习笔记Ⅱ
  • 登录拦截功能实现 -瑞吉外卖笔记
  • 2025年EAAI SCI1区TOP,基于低差异序列的仿果蝇无人机地下环境路径规划算法,深度解析+性能实测
  • 群晖 NAS Docker 镜像加速配置详细教程
  • SpringBean 创建过程详解
  • 【ELK(Elasticsearch+Logstash+Kibana) 从零搭建实战记录:日志采集与可视化】
  • 预训练 vs. 微调:大模型落地的核心两步,究竟有何不同?
  • 【Linux手册】进程地址空间:从虚拟到物理的内存寻址之旅
  • 通义大模型在文档自动化处理中的高效部署指南(OCR集成与批量处理优化)
  • go excel解析库xuri/excelize中的SAX
  • 【PyTorch项目实战】CycleGAN:无需成对训练样本,支持跨领域图像风格迁移
  • 开关电源:BUCK和BOOST
  • NotePad++ 怎么没有找到插件管理?
  • C++ 友元:打破封装边界的“特殊权限”
  • LangChain赋能RAG:从构建到评估优化的一体化实战指南
  • php网站 关键技术/大连头条热点新闻
  • iis 设置网站不能访问/灯塔网站seo
  • 个人品牌网站设计/互联网金融营销案例
  • 网站排名优化建设/广告营销案例100例
  • 广州购物网站建设价格/2023年第三波新冠9月
  • 把网站做app/seo研究协会网是干什么的