Go 语言数组基础教程 - 数组的声明、初始化和使用方法
数组用于在单个变量中存储相同类型的多个值,而不是为每个值声明单独的变量。
声明数组
在Go中,有两种声明数组的方式:
- 使用
var关键字:
语法
var array_name = [length]datatype{values} // 这里定义了长度
或者
var array_name = [...]datatype{values} // 这里长度是隐含的
- 使用
:=符号:
语法
array_name := [length]datatype{values} // 这里定义了长度
或者
array_name := [...]datatype{values} // 这里长度是隐含的
注意:长度指定了数组中要存储的元素数量。在Go中,数组具有固定的长度。数组的长度可以通过一个数字来定义,也可以是隐含的(这意味着编译器根据值的数量来决定数组的长度)。
数组示例
这个示例声明了两个具有定义长度的数组(arr1和arr2):
package main
import "fmt"
func main() {
var arr1 = [3]int{1, 2, 3}
arr2 := [5]int{4, 5, 6, 7, 8}
fmt.Println(arr1)
fmt.Println(arr2)
}
输出:
[1 2 3]
[4 5 6 7 8]
示例
这个示例声明了两个隐含长度的数组(arr1和arr2):
package main
import "fmt"
func main() {
var arr1 = [...]int{1, 2, 3}
arr2 := [...]int{4, 5, 6, 7, 8}
fmt.Println(arr1)
fmt.Println(arr2)
}
输出:
[1 2 3]
[4 5 6 7 8]
示例
这个示例声明了一个字符串数组:
package main
import "fmt"
func main() {
var cars = [4]string{"Volvo", "BMW", "Ford", "Mazda"}
fmt.Print(cars)
}
输出:
[Volvo BMW Ford Mazda]
访问数组元素
您可以通过引用索引号来访问特定的数组元素。
在Go中,数组索引从0开始。这意味着[0]是第一个元素,[1]是第二个元素,依此类推。
示例
这个示例展示了如何访问prices数组中的第一个和第三个元素:
package main
import "fmt"
func main() {
prices := [3]int{10, 20, 30}
fmt.Println(prices[0])
fmt.Println(prices[2])
}
输出:
10
30
更改数组元素
您还可以通过引用索引号来更改特定数组元素的值。
示例
这个示例展示了如何更改prices数组中第三个元素的值:
package main
import "fmt"
func main() {
prices := [3]int{10, 20, 30}
prices[2] = 50
fmt.Println(prices)
}
输出:
[10 20 50]
数组初始化
如果数组或其元素在代码中没有被初始化,它将被分配其类型的默认值。
提示:int的默认值是0,string的默认值是""。
示例
package main
import "fmt"
func main() {
arr1 := [5]int{} // 未初始化
arr2 := [5]int{1, 2} // 部分初始化
arr3 := [5]int{1, 2, 3, 4, 5} // 全部初始化
fmt.Println(arr1)
fmt.Println(arr2)
fmt.Println(arr3)
}
输出:
[0 0 0 0 0]
[1 2 0 0 0]
[1 2 3 4 5]
仅初始化特定元素
也可以仅初始化数组中的特定元素。
示例
这个示例仅初始化数组的第二和第三个元素:
package main
import "fmt"
func main() {
arr1 := [5]int{1: 10, 2: 40}
fmt.Println(arr1)
}
输出:
[0 10 40 0 0]
示例解释
上面的数组有5个元素。
1:10 表示:将10赋值给数组索引1(第二个元素)。
2:40 表示:将40赋值给数组索引2(第三个元素)。
查找数组的长度
使用`len()`函数可以找到数组的长度:
示例
package main
import "fmt"
func main() {
arr1 := [4]string{"Volvo", "BMW", "Ford", "Mazda"}
arr2 := [...]int{1, 2, 3, 4, 5, 6}
fmt.Println(len(arr1))
fmt.Println(len(arr2))
}
输出:
4
6
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎 点赞、收藏、关注
Go 语言数组基础教程 - 数组的声明、初始化和使用方法的更多相关文章
- 2.4JAVA基础复习——JAVA语言的基础组成数组
JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...
- C语言 指针基础篇 数组,函数与指针的运用 2 14
下面看看如何在函数中运用指针吧 下面是往函数传入指针的简单操作,不是传入数组的.判断一个a是否大于b是的话给,是的话对其进行操作,不是的话就直接返回. #include <stdio.h> ...
- Java基础教程——数组
数组 Java数组:用于存储同一种数据类型的多个数据. Java数组本身是一种数据类型--引用类型. 类(String.Scanner等大写字母开头的类型)也属于引用类型,int.double等基本类 ...
- C#语言最基础的数组和集合
数组的书写格式:数据类型[]变量名=new 数据类型[长度]: 集合的书写格式:List<变量类型>变量名=new List<变量类型>(): 集合添加元素:变量名.Add(数 ...
- 《ES6基础教程》之 Call 方法和 Apply 方法
<script type="text/javascript"> // Call方法: // 语法:call(thisObj[,arg1,arg2,...,argN]) ...
- python基础教程_学习笔记11:魔法方法、属性和迭代器
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/signjing/article/details/31417309 魔法方法.属性和迭代器 在pyth ...
- Python基础教程:模块重载的五种方法
环境准备 新建一个 foo 文件夹,其下包含一个 bar.py 文件 $ tree foo foo └── bar.py 0 directories, 1 file bar.py 的内容非常简单,只写 ...
- 《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器(上)
构造方法 在Python中创建一个构造方法很容易.只要把init方法的名字从简单的init修改为魔法版本__init__即可: >>> class FooBar: ... d ...
- Linux基础教程 linux下查询history操作时间的方法
要在linux操作系统中查看history记录的操作时间,可以按如下步骤实现: 学习linux 1,修改/etc/profile文件,在末尾添加:exporthisttimeformat=”%f %t ...
- PHP基础教程 常见PHP错误类型及屏蔽方法
程序只要在运行,就免不了会出现错误,错误很常见,比如Error,Notice,Warning等等.这篇文章兄弟连PHP培训 小编来跟大家具体说一下PHP的错误类型和屏蔽方法.在 PHP 中,主要有以下 ...
随机推荐
- itsdangerous模块的使用
简介 生成临时身份令牌(通过邮件让用户注册激活的时候地址当中带有用户的信息.但是信息一般都是敏感信息,而且还想让它具有时效性,所以就可以选择itsdangerous模块 官网:https://itsd ...
- Nebula Graph 源码解读系列 | Vol.01 Nebula Graph Overview
上篇序言中我们讲述了源码解读系列的由来,在 Nebula Graph Overview 篇中我们将带你了解下 Nebula Graph 的架构以及代码仓分布.代码结构和模块规划. 1. 架构 Nebu ...
- clickhouse 安装启动报<Error> Application: DB::Exception: There is no profile 'default' in configuration file. 以及常见的错误的总结
1.启动时报错<Error> Application: DB::Exception: There is no profile 'default' in configuration file ...
- Java abstract 小测试
1 package com.bytezreo.abstractTest; 2 3 /** 4 * 5 * @Description abstract 小测试 6 * @author Bytezero· ...
- C++ //模板案例-数组封装类
1 //模板案例-数组封装类 2 //描述 3 //实现一个通用的数组类 4 //1.可以对内置数据类型以及自定义数据类型的数据进行储存 5 //2.将数组很脏的数据储存到堆区 6 //3.构造函数中 ...
- Codeforces Round 799 (Div. 4)G. 2^Sort
暴力枚举每一个端点然后去check 显然是复杂度为\(O(n^2)\)是来不及的. 我们考虑大区间满足小区间一定满足,用两个指针维护一下当前满足不等式的区间,然后长度达到就计算答案. 思路很简单,主要 ...
- Java面试必考题之线程的生命周期,结合源码,透彻讲解!
写在开头 在前面的几篇博客里,我们学习了Java的多线程,包括线程的作用.创建方式.重要性等,那么今天我们就要正式踏入线程,去学习更加深层次的知识点了. 第一个需要学的就是线程的生命周期,也可以将之理 ...
- mybatis批量插入的四种方式
一.循环插入 public void insert(List<User> userList) { userList.forEach(user -> userDao.insert(us ...
- vue 动态加载css,改变网站皮肤模式
Vue.mixin({ created () { require('view-design/dist/styles/iview.css') } }) 参考资料:https://blog.csdn.ne ...
- Pod中断预算 PodDisruptionBudget(PDB)
PodDisruptionBudget(PDB)是Kubernetes中的一个资源对象,用于确保在进行维护.升级或其他操作时,系统中的Pod不会被意外中断或终止.PDB提供了一种机制,通过限制在给定时 ...