当前位置: 首页 > 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是不同类型
http://www.lryc.cn/news/573862.html

相关文章:

  • 114. 二叉树展开为链表
  • C++插值记录
  • 开发云数据库
  • Python环境搭建竞赛
  • python的高校教师资源管理系统
  • 【Guava】0.做自己的编程语言
  • 删除node并且重装然后重装vue
  • 深度学习:PyTorch人工神经网络优化方法分享(2)
  • 【redis使用场景——缓存——双写一致性】
  • 文心一言(ERNIE Bot):百度打造的知识增强大语言模型
  • 一键打包利器:gopack - 极简Go程序编译与压缩工具
  • Ollama按照与使用
  • openapi-generator-maven-plugin自动生成HTTP远程调用客户端
  • Java面试复习指南:基础、面向对象、Java 8新特性及并发编程
  • ASP.NET Core API文档与测试实战指南
  • 编程江湖-Git
  • 分库分表下的 ID 冲突问题与雪花算法讲解
  • 【数据结构】_二叉树部分特征统计
  • python基础(3)
  • 【论文阅读 | CVPR 2024 |Fusion-Mamba :用于跨模态目标检测】
  • 利用通义大模型构建个性化推荐系统——从数据预处理到实时API部署
  • 算法-动态规划-钢条切割问题
  • 简单工厂模式,工厂模式和注册工厂模式
  • Go 循环依赖的依赖注入解决方案详解
  • Cache Travel-09-从零开始手写redis(17)v1.0.0 全新版本架构优化+拓展性增强
  • AI三步诊断心理:比ChatGPT更懂人心
  • C#Halcon从零开发_Day14_AOI缺陷检测策略1_Bolb分析+特征分析_饼干破损检测
  • JavaScript性能优化实战
  • MySQL索引分类有哪些?
  • RA4M2开发IOT(9)----动态显示MEMS数据