01-go基础-05-数组(声明数组、数组赋值、遍历数组、数组值修改)

news2024/11/25 4:35:53

文章目录

  • 1. 声明数组
    • - 语法
    • - 完整示例
  • 2. 数组赋值
    • - 语法
    • - 完整示例
    • - 未赋值的元素仍为默认值
  • 3. 数组元素赋值
    • - 语法
    • - 示例
  • 4. 数组访问
    • 4.1 访问数组中元素
    • 4.2 遍历数组
  • 5. 数组的修改
    • 5.1 修改全部数组元素值
    • 5.2 修改单个元素值
    • 5.3 数组长度不可以更改

1. 声明数组

- 语法

  • 语法
var arrayName [N]type
  • 语法示例
var names [3]string

- 完整示例

package main

import (
	"fmt"
	"reflect"
)

func main() {
	var names [3]string
	fmt.Printf("变量 names 类型为:%q\n打印结果:%+v\n长度为:%d",reflect.TypeOf(names),names,len(names))
}

结果

变量 names 类型为:"[3]string"
打印结果:[  ]
长度为:3

2. 数组赋值

- 语法

  • 语法
var arrayName = [N]type{valu1,valu2,valu3……}

在函数中可以写做

arrayName := [N]type{valu1,valu2,valu3……}
  • 语法示例
names := [3]string{"刘备","关羽","张飞"}

可以写做

var names [3]string
names = [3]string{"刘备","关羽","张飞"}

也可以写做:

var names [3]string
names = [...]string{"刘备","关羽","张飞"}

但是成员数和定义的长度一定要一致,否则报错。

- 完整示例

  • 代码
package main
import "fmt"

func main() {
	names := [3]string{"刘备","关羽","张飞"}
	fmt.Printf("数组为:%+v\n长度为:%d\n",names,len(names))
}
  • 结果
数组为:[刘备 关羽 张飞]
长度为:3

- 未赋值的元素仍为默认值

如下,我们赋值时给长度为3的数组传入两个元素,则第三个元素仍为默认值(int 默认值为0)

  • 代码
package main
import "fmt"

func main() {
	arrayInt := [3]int{66,166}
	fmt.Printf("数组为:%+v\n长度为:%d\n",arrayInt,len(arrayInt))
}
  • 结果
数组为:[66 166 0]
长度为:3

3. 数组元素赋值

- 语法

arrayName[N] = valueN
  • 语法示例
names[0] = "刘备"

- 示例

  • 代码
package main

import "fmt"

func main() {
	var names [3]string
	fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names))
	names[0] = "刘备"
	fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names))
	names[2] = "张飞"
	fmt.Printf("=================\n数组为:%+v\n长度为:%d\n",names,len(names))
}
  • 结果
=================
数组为:[  ]
长度为:3
=================
数组为:[刘备  ]
长度为:3
=================
数组为:[刘备  张飞]
长度为:3

4. 数组访问

4.1 访问数组中元素

  • 代码
package main

import "fmt"

func main() {
	names := [3]string{"刘备","关羽","张飞"}
	fmt.Println(names[0])
}
  • 结果
刘备

4.2 遍历数组

  • 代码
package main

import "fmt"

func main() {
	names := [3]string{"刘备","关羽","张飞"}
	for num,name := range names{
		fmt.Printf("第%d个元素是:  %q\n",num,name)
	}
}
  • 结果
0个元素是:  "刘备"1个元素是:  "关羽"2个元素是:  "张飞"

5. 数组的修改

5.1 修改全部数组元素值

数组直接等于一个长度相等的数组,则全部值都改变。(长度不相等的数组会报错)

  • 代码
package main
import "fmt"

func main() {
	names := [3]string{"刘备","关羽","张飞"}
	fmt.Printf("原数组为:%+v\n",names)
	names = [3]string{"孙权","周瑜","黄盖"}
	fmt.Printf("修改后数组为:%+v\n",names)
}
  • 结果
原数组为:[刘备 关羽 张飞]
修改后数组为:[孙权 周瑜 黄盖]
  • 修改时,若长度为3的数组只传入2个元素,未传入值的元素将修改为默认值

5.2 修改单个元素值

  • 代码
package main
import "fmt"

func main() {
	names := [3]string{"刘备","关羽","张飞"}
	fmt.Printf("原数组:%+v\n",names)
	names[0]="刘玄德"
	fmt.Printf("修改后:%+v\n",names)

}
  • 结果
原数组:[刘备 关羽 张飞]
修改后:[刘玄德 关羽 张飞]

5.3 数组长度不可以更改

没有示例,怎么改都会报错


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/65280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

刷爆力扣之1 比特与 2 比特字符

刷爆力扣之1 比特与 2 比特字符 HELLO,各位看官大大好,我是阿呆 🙈🙈🙈 今天阿呆继续记录下力扣刷题过程,收录在专栏算法中 😜😜😜 该专栏按照不同类别标签进行刷题&am…

[附源码]Python计算机毕业设计Django四川景区管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

Go语言的IO库那么多纠结该如何选择

在Go语言中I/O操作的内置库有很多种,比如:io库,os库,ioutil库,bytes库,strings库等等。 io.Reader/Writer Go语言里使用io.Reader和io.Writer两个 interface 来抽象I/O,他们的定义如下。 type Reader int…

数据图表软件-FineReport控件简介

1. 概述 1.1 版本 报表服务器版本 功能变更 11.0 -- 1.2 应用场景 在帆软报表的具体应用中,经常使用「控件」来实现不同的功能。根据使用方式可将控件分为填报控件和参数控件两大类,填报时使用的控件为填报控件,参数界面使用的控件为参…

认证服务------遇到的问题及解决方案

认证服务的问题及解决方案 问题1:发送验证码 发送验证码要注意的问题 发送验证码要注意的两个问题 1、接口防刷 接口防刷就是因为发送验证码的api接口是可以通过查看页面元素看的到的 上面就可以看到发送验证码的js代码中的请求地址,可以恶意的通过…

【产品设计】APP提升用户注册率的五个方案探讨结论

首先介绍下前置条件,我们在做产品时,出于一开始对行业特征和用户参与度的考虑,所以对注册没有要求,当用户触发需要记录用户行为的功能时才会弹出登陆注册的聚合页面,能够触发弹出的功能有:赞、写点评、回复…

ActiveMQ 笔记(九)Windows部署:单机与集群部署流程

1. 单机版部署 版本关系说明:JDK8环境只能安装5.2及以下的。超过5.2需要JDK9及以上版本环境。 (1)官网下载安装包 activemq.apache.org 选择一个版本进行下载, (2)解压安装包 下载完成之后解压 下载后直接解压缩直接就能用(免安装)。 bin/是服务启动相关的命令文件…

Xylan-PEG-NHS|木聚糖-聚乙二醇-琥珀酰亚胺

Xylan-PEG-NHS|木聚糖-聚乙二醇-琥珀酰亚胺 琥珀酰亚胺又称为丁酰亚胺或丁二酰亚胺,是一种无色针状结晶或具有淡褐色光泽的薄片固体,味甜。易溶于水、醇或氢氧化钠溶液,不溶于醚、氯仿等 中文名称:木聚糖-聚乙二醇-琥珀酰亚胺 …

目标检测 YOLOv5 开源代码项目-环境配置问题

学习视频: 目标检测 YOLOv5 开源代码项目调试与讲解实战【土堆 x 布尔艺数】 项目源码:ultralytics / yolov5 教程:手把手带你调参Yolo v5 (v6.2)(推理) 遇到的问题&解决的链接: ERROR: Failed buil…

怎样查看对方计算机网络密码,如何查看邻居家的wifi密码?不知道wifi密码怎么蹭网...

如何查看邻居家的wifi密码?不知道wifi密码怎么蹭网?不知道大家有没有遇到这样的问题:手机虽然已经连接到了WiFi,但是却已经忘记了WiFi密码。这时候如果会有一丝担忧在心中,如果下次连接不上,或是有人问你密…

[C语言数据结构]树

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录1.树1.1树的概念:1.2树与非树1.3一些关于树的概念:1.4树的一些表示方法:2.二叉树2.1概念:2.2二叉树的特点2.3满二叉树…

为什么在做微服务设计的时候一定需要DDD?

记得之前在规划和设计微服务架构的时候,张队长给了我一个至今依然记忆深刻的提示:你的设计蓝图里为什么没有看到DDD的影子呢? 随着对充血模型的领域认知的加深,我越加感觉到DDD的重要性。于是网上一顿海找,并做了学习…

Thinkpad x13 锐龙安装 Archlinux 记录

硬件配置: 笔记本影响cpu显卡内存硬盘ThinkPad X13 锐龙版r7 4750U核显16g1TB 山寨固态(大华)镜像准备 https://archlinux.org/download/ http://mirrors.163.com/archlinux/iso/2022.12.01/ 每次安装都检查iso镜像是否是网站最新的&#x…

国外数字书籍第2期

1、高级FPGA设计 (中英文版) 本书主要讲解了FPGA设计、方法和实现。这本书略去了不太必要的理论、推测未来的技术、过时工艺的细节,用简明、扼要的方式描述FPGA中的关键技术。 图1 高级FPGA设计 (克里兹)(英文版)主要内容包括:设计速度高、体积小、功耗低…

代码随想录算法训练营第五十三天|1143.最长公共子序列、1035.不相交的线、53. 最大子序和

LeetCode 1143.最长公共子序列 链接:1143.最长公共子序列 思路: 这题和上一题718. 最长重复子数组非常的像,唯一的区别就是这里的子序列可以不是连续的,既然不要求连续,我们可以在定义下标的时候不限制以特定字母结…

实战三十一:基于LightGCN推荐算法的推荐系统详细教程代码+数据

推荐系统任务描述:通过用户的历史行为(比如浏览记录、购买记录等等)构造出用户-项目交互图,协同过滤利用过去的用户-项目交互来实现预测;对相似的用户进行推荐相同喜好的item,帮助他们发现可能感兴趣的却不容易发现的item;同时将埋没在长尾中的好商品推荐给可能感兴趣的…

web前端进阶<7>:3d图像翻转效果

这几天又闲着无聊,自己学的东西又有一点不牢固了,需要写一个小程序来巩固一下,相信大家也时有同感吧!那么这一期就给大家带来一个炫酷的相册3d翻转效果,如果搭上炫酷的文字和动画那肯定是高端、霸气上档次的&#xff1…

安科瑞AF-GSM系列 智能物联网网关 支持4G/NB通讯-三防与水文监测

安科瑞 王晶淼/刘芳 1、商品描述 AF-GSM是安科瑞电气推出的新型的4G远程无线数据采集设备,采用嵌入式设计,内嵌TCP/IP协议栈,同时采用了功能强大的微处理芯片,配合内置看门狗,性能可靠稳定。 本产品提供标准RS485数…

Postman 调用 Spring Boot 文件上传接口

文章目录Postman 调用文件上传接口Postman 简介Spring Boot 定义文件上传的接口Postman 调用文件上传接口文件上传接口源码参考文献Postman 调用文件上传接口 Postman 简介 Postman 是一个用于构建和使用 API 的 API 平台。 Postman 简化了 API 生命周期的每一步,…

怎么把PDF加密?这3种方法让你轻松给PDF文件加密

现在我们的工作、学习和生活中,常会用到办公软件,其中PDF因为不易编辑,传输效果好,可以加密等特点深受大家的喜爱。我作为一个职场人,在需要分享PDF文件到人数比较多的平台时,为了不让其他人可以随意地查看…