首页 > 其他分享 >Golang教程第16篇(语言数组)

Golang教程第16篇(语言数组)

时间:2024-12-06 18:57:28浏览次数:6  
标签:初始化 教程 16 元素 Element Golang 数组 balance float32

Go 语言数组

Go 语言提供了数组类型的数据结构。
数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整型、字符串或者自定义类型。
相对于去声明 number0, number1, …, number99 的变量,使用数组形式 numbers[0], numbers[1] …, numbers[99] 更加方便且易于扩展。
数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。
在这里插入图片描述


声明数组

Go 语言数组声明需要指定元素类型及元素个数,语法格式如下:

var arrayName [size]dataType

其中,arrayName 是数组的名称,size 是数组的大小,dataType 是数组中元素的数据类型。
以下定义了数组 balance 长度为 10 类型为 float32:

var balance [10]float32

初始化数组

以下演示了数组初始化:
以下实例声明一个名为 numbers 的整数数组,其大小为 5,在声明时,数组中的每个元素都会根据其数据类型进行默认初始化,对于整数类型,初始值为 0。

var numbers [5]int

还可以使用初始化列表来初始化数组的元素:

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

以上代码声明一个大小为 5 的整数数组,并将其中的元素分别初始化为 1、2、3、4 和 5。
另外,还可以使用 := 简短声明语法来声明和初始化数组:

numbers := [5]int{1, 2, 3, 4, 5}

以上代码创建一个名为 numbers 的整数数组,并将其大小设置为 5,并初始化元素的值。
注意:在 Go 语言中,数组的大小是类型的一部分,因此不同大小的数组是不兼容的,也就是说 [5]int 和 [10]int 是不同的类型。

以下定义了数组 balance 长度为 5 类型为 float32,并初始化数组的元素:

var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

我们也可以通过字面量在声明数组的同时快速初始化数组:

balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

如果数组长度不确定,可以使用 … 代替数组的长度,编译器会根据元素个数自行推断数组的长度:

var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

balance := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

如果设置了数组的长度,我们还可以通过指定下标来初始化元素:

// 将索引为 1 和 3 的元素初始化

balance := [5]float32{1:2.0,3:7.0}

初始化数组中 {} 中的元素个数不能大于 [] 中的数字。

如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:

 balance[4] = 50.0

以上实例读取了第五个元素。数组元素可以通过索引(位置)来读取(或者修改),索引从 0 开始,第一个元素索引为 0,第二个索引为 1,以此类推。

在这里插入图片描述


访问数组元素

数组元素可以通过索引(位置)来读取。格式为数组名后加中括号,中括号中为索引的值。例如:

var salary float32 = balance[9]

以上实例读取了数组 balance 第 10 个元素的值。

以下演示了数组完整操作(声明、赋值、访问)的实例:

实例 1

package main
import "fmt"
func main() {
   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] )
   }
}

以上实例执行结果如下:

Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109

实例 2

package main
import "fmt"
func main() {
   var i,j,k int
   // 声明数组的同时快速初始化数组
   balance := [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0}

   /* 输出数组元素 */         ...
   for i = 0; i < 5; i++ {
      fmt.Printf("balance[%d] = %f\n", i, balance[i] )
   }
   
   balance2 := [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
   /* 输出每个数组元素的值 */
   for j = 0; j < 5; j++ {
      fmt.Printf("balance2[%d] = %f\n", j, balance2[j] )
   }

   //  将索引为 1 和 3 的元素初始化
   balance3 := [5]float32{1:2.0,3:7.0}  
   for k = 0; k < 5; k++ {
      fmt.Printf("balance3[%d] = %f\n", k, balance3[k] )
   }
}

以上实例执行结果如下:

balance[0] = 1000.000000
balance[1] = 2.000000
balance[2] = 3.400000
balance[3] = 7.000000
balance[4] = 50.000000
balance2[0] = 1000.000000
balance2[1] = 2.000000
balance2[2] = 3.400000
balance2[3] = 7.000000
balance2[4] = 50.000000
balance3[0] = 0.000000
balance3[1] = 2.000000
balance3[2] = 0.000000
balance3[3] = 7.000000
balance3[4] = 0.000000

标签:初始化,教程,16,元素,Element,Golang,数组,balance,float32
From: https://blog.csdn.net/bianenhui91/article/details/144141775

相关文章

  • 基于Pytorch的深度学习入门教程
    基于Pytorch的深度学习入门教程私以为深度学习入门主要是数据+模型,因此本教程从数据入手,逐步深入本教程需要一定的基础,不是对内容的详细讲解,更偏重于引导入门。详细内容参见​PyTorchdocumentation关于分析python包内容及作用​dir()​获取包中的所有功能​help()​帮助文......
  • 16-结构体
    16-结构体结构体可以让C语言创建出新的类型。/*创建一个学生类型*/structStu{ charname[20]; //名字 intage; //年龄 doublescore; //成绩};/*创建一个书的类型*/structBook{ charname[20]; //名字 floatprice; //价格 charid[30]; //书号};......
  • 免费内网穿透,了解下?手把手搭建,三步搞定!网络安全零基础入门到精通实战教程!
    在内网部署的一个应用,想分享给外网的小伙伴玩玩?学校实验室有一台高性能服务器,在外网就无法使用?来吧,内网穿透,了解一下?1.关于内网穿透1.1什么是内网穿透且看百度百科的说法:内网穿透,也即NAT穿透,进行NAT穿透是为了使具有某一个特定源IP地址和源端口号的数据包不......
  • 洛谷题单指南-线段树-P1637 三元上升子序列
    原题链接:https://www.luogu.com.cn/problem/P1637题意解读:统计序列a[1]~a[n]中三元上升子序列的个数,三元上升子序列是指对于1<=i<j<k<=n有a[i]<a[j]<a[k],(a[i],a[j],a[k])成为一组上升子序列。解题思路:1、先思考一下暴力,通过三重循环枚举i,j,k找到所有i<j<k时符合a[i]<a[j]<a[k]......
  • IDEA、Pycharm、GoLang等激活常见原因汇总
    前言激活方式千变万化,方式也不断更新,常用的激活方式,大致就2种一种是双击vbs文件,自动激活至2099年IDEA2024.3安装激活教程(至2099年)Pycharm2024.3安装激活使用教程(至2099年)一种是通过ja-netfilter.jar,自动激活至2025/2026(实际上永久的)关于IntelliJIDEA2024安......
  • 【详细教程】如何下载伯索云学堂上面已购买的视频课程
    前言:很多同学都想知道伯索云学堂视频课程怎么下载,但是伯索云上面已购买的视频课程是不提供直接下载方式的,所以下面就教大家如何下载伯索云学堂上面已购买的视频课程。一、下载器首页输入A回车,再输入伯索云对应序号并按回车,提示登录,再输入Y登录对应的伯索云账号二、此时会有弹窗......
  • 2024Webstorm安装使用教程(JS开发工具,附激活小妙招)
    第一步开启Webstorm之旅为了方便,也可以去链接取点击获取安装包待下载顺利完成后,双击安装包开启安装程序,在安装向导中一路点击“next”,依照提示逐步完成基础安装设置首次打开,会要求输入激活码才能使用第二步点击获取补丁文件保存下载之后进入文件夹***/JetBrains2023......
  • 洛谷 P1651 塔(DP)
    题目传送门https://www.luogu.com.cn/problem/P1651解题思路设  表示前  个积木,两塔高度差为 (第一个比第二个高多少),的最大高度。易得:首先,不选当前的积木:其次,选当前积木,将它拼到第一个塔上:最后,选当前积木,将它拼到第二个塔上:由于,第二维可能为负数,所以,我们可以以 (数......
  • 大模型--数据类型FP16 BF16--29
    1.参考https://blog.csdn.net/voiiid/article/details/114825246https://blog.csdn.net/shizheng_Li/article/details/1441409122.半精度浮点fp16这两种数据类型编程是经常遇见双精度double,64位单精度float,32位FP16(Half-precisionfloating-pointformat)它提供更高的......
  • 2024版最新渗透测试零基础入门教程,带你入门到精通(超详细),收藏这篇就够了
    一、渗透测试是什么?释义:我们理解的渗透测试是通过各种⼿段对⽬标进⾏⼀次渗透(攻击),通过渗透来测试⽬标的安全防护能⼒和安全防护意识。打个⽐⽅:⽐如电视剧《我是特种兵》⾥⾯的演习,特种部队(进攻⽅)渗透到蓝军(防守⽅)的指挥部进⾏斩⾸,如果斩⾸成功,那么就可以知道蓝⽅的防守能......