Golang基础-4
Go语言基础
介绍
基础
介绍
- 本文介绍Go语言中数组(array)操作(数组声明、元素访问与修改、数组遍历、关系运算、切片创建、多维数组)等相关知识。
基础
数组
- 数组是具有相同数据类型的数据元素组成的一组长度固定的序列,数组的长度必须是非负整数的常量,长度也是类型的一部分。
- 数组声明后,其数据类型与元素数量固定不可变。
数组声明
package mainimport "fmt"func main() {// 声明数组var arr0 [5]float32fmt.Printf("%T, %v\n", arr0, arr0)// 声明并初始化数组,指定数组长度var arr1 [5]int = [5]int{1, 2, 3, 4, 5}fmt.Printf("%T, %v\n", arr1, arr1)// 自动推导参数类型,初始化前三个元素,后两个默认为空arr2 := [5]string{"fsd", "fdsds", "fds"}fmt.Printf("%T, %v\n", arr2, arr2)// 数组长度不确定时自动推导arr3 := [...]byte{'A', 'B'}fmt.Printf("%T, %c\n", arr3, arr3)// 指定元素位置初始化arr4 := [5]int{0: 10, 3: 13, 4: 14}fmt.Printf("%T, %v\n", arr4, arr4)// 数组长度不确定时,指定元素位置初始化并自动推导arr5 := [...]int{0: 1, 4: 3}fmt.Printf("%T, %v\n", arr5, arr5)
}
输出结果
[5]float32, [0 0 0 0 0]
[5]int, [1 2 3 4 5]
[5]string, [fsd fdsds fds ]
[2]uint8, [A B]
[5]int, [10 0 0 13 14]
[5]int, [1 0 0 0 3]
数组声明
- 通过数组下标(索引位置)来访问或修改数组的元素
- 数组的起始索引从0开始
package mainimport "fmt"func main() {var arr [5]int = [5]int{1, 2, 3, 4, 5}fmt.Println(arr)// 以索引访问数组fmt.Println("arr[0] = ", arr[0])fmt.Println("arr[1] = ", arr[1])fmt.Println("arr[2] = ", arr[2])fmt.Println("arr[3] = ", arr[3])fmt.Println("arr[4] = ", arr[4])// 修改数组arr[0] = 100arr[1] = 200arr[4] = 300fmt.Println("arr[0] = ", arr[0])fmt.Println("arr[1] = ", arr[1])fmt.Println("arr[2] = ", arr[2])fmt.Println("arr[3] = ", arr[3])fmt.Println("arr[4] = ", arr[4])
}
输出结果
[1 2 3 4 5]
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
arr[0] = 100
arr[1] = 200
arr[2] = 3
arr[3] = 4
arr[4] = 300
数组遍历
- 使用 for循环遍历数组
package mainimport "fmt"func main() {var arr [5]int = [5]int{1, 2, 3, 4, 5}fmt.Println(arr)// 获取数组大小fmt.Println(len(arr))// for循环遍历for i := 0; i < len(arr); i++ {fmt.Println("arr[", i, "] = ", arr[i])}fmt.Println("========================")// for-range遍历for i, v := range arr {fmt.Println("arr[", i, "] = ", v)}
}
输出结果
[1 2 3 4 5]
5
arr[ 0 ] = 1
arr[ 1 ] = 2
arr[ 2 ] = 3
arr[ 3 ] = 4
arr[ 4 ] = 5
========================
arr[ 0 ] = 1
arr[ 1 ] = 2
arr[ 2 ] = 3
arr[ 3 ] = 4
arr[ 4 ] = 5
关系运算
- 可判断同数据类型数组间是否相同(==、!=)
package mainimport "fmt"func main() {var arr [5]int = [5]int{1, 2, 3, 4, 5}fmt.Println("== ", arr == [...]int{1, 2, 3, 4, 5})fmt.Println("!= ", arr != [...]int{1, 2, 3, 4, 5})
}
输出结果
== true
!= false
切片创建
- array[start : end] 或 array[start : end : cap](end<=cap<=len)获得部分元素做为切片
package mainimport "fmt"func main() {var arr [5]int = [5]int{1, 2, 3, 4, 5}// 获取数组长度和数组容量fmt.Printf("arr len: %v, cap: %v\n", len(arr), cap(arr))fmt.Println("=====================")// 从数组创建切片,array[start:end]s1 := arr[0:2]fmt.Printf("s1 type: %T, value: %v, len: %v, cap: %v\n", s1, s1, len(s1), cap(s1))// 从数组创建切片,array[start:end:cap]s2 := arr[0:1:2]fmt.Printf("s2 type: %T, value: %v, len: %v, cap: %v\n", s2, s2, len(s2), cap(s2))
}
输出结果
arr len: 5, cap: 5
=====================
s1 type: []int, value: [1 2], len: 2, cap: 5
s2 type: []int, value: [1], len: 1, cap: 2
多维数组
- 数组的元素也可以是数组类型,这就是多维数组
- 多维数组声明
package mainimport "fmt"func main() {// 声明一个二维数组var arr [2][2]int = [2][2]int{}fmt.Println("arr: ", arr)// 声明一个二维数组,并初始化var arr1 [2][3]int = [2][3]int{{1, 2, 3}, {4, 5, 6}}fmt.Println("arr1: ", arr1)// 自动推导类型arr2 := [2][2]int{}fmt.Printf("arr2 type: %T, value: %v\n", arr2, arr2)// 多维数组只有第一维长度可使用变量数自动推导arr3 := [...][3]int{{1, 2, 3}, {4, 5, 6}}fmt.Printf("arr3 type: %T, value: %v\n", arr3, arr3)// 按数组第一维索引初始化arr4 := [3][3]int{0: {1, 1, 1}, 2: {3, 3, 3}}fmt.Printf("arr4 type: %T, value: %v\n", arr4, arr4)// 按数组多维度索引初始化arr5 := [3][3]int{0: {0: 10, 2: 20}, 2: {3, 3, 3}}fmt.Printf("arr5 type: %T, value: %v\n", arr5, arr5)
}
输出结果
arr: [[0 0] [0 0]]
arr1: [[1 2 3] [4 5 6]]
arr2 type: [2][2]int, value: [[0 0] [0 0]]
arr3 type: [2][3]int, value: [[1 2 3] [4 5 6]]
arr4 type: [3][3]int, value: [[1 1 1] [0 0 0] [3 3 3]]
arr5 type: [3][3]int, value: [[10 0 20] [0 0 0] [3 3 3]]
- 多维数组访问与修改
package mainimport "fmt"func main() {// 声明一个二维数组,并初始化var arr1 [2][3]int = [2][3]int{{1, 2, 3}, {4, 5, 6}}fmt.Println("arr1: ", arr1)// 访问维度fmt.Println("arr1[0]: ", arr1[0])// 访问某个元素fmt.Println("arr1[0][2]: ", arr1[0][2])// 修改维度arr1[0] = [3]int{10, 20, 30}fmt.Println("arr1: ", arr1)// 修改某个元素arr1[0][2] = 100fmt.Println("arr1: ", arr1)
}
输出结果
arr1: [[1 2 3] [4 5 6]]
arr1[0]: [1 2 3]
arr1[0][2]: 3
arr1: [[10 20 30] [4 5 6]]
arr1: [[10 20 100] [4 5 6]]
- 多维数组遍历
package mainimport "fmt"func main() {// 声明一个二维数组,并初始化var arr1 [2][3]int = [2][3]int{{1, 2, 3}, {4, 5, 6}}fmt.Println("arr1: ", arr1)// for循环遍历for i := 0; i < len(arr1); i++ {for j := 0; j < len(arr1[i]); j++ {fmt.Printf("arr1[%v][%v] = %v\t", i, j, arr1[i][j])}fmt.Println()}fmt.Println("=======================")// for-range循环遍历for i, row := range arr1 {for j, v := range row {fmt.Printf("arr1[%v][%v] = %v\t", i, j, v)}fmt.Println()}
}
输出结果
arr1: [[1 2 3] [4 5 6]]
arr1[0][0] = 1 arr1[0][1] = 2 arr1[0][2] = 3
arr1[1][0] = 4 arr1[1][1] = 5 arr1[1][2] = 6
=======================
arr1[0][0] = 1 arr1[0][1] = 2 arr1[0][2] = 3
arr1[1][0] = 4 arr1[1][1] = 5 arr1[1][2] = 6
起始
相关文章:
Golang基础-4
Go语言基础 介绍 基础 数组(array) 数组声明 元素访问与修改 数组遍历 关系运算 切片创建 多维数组 介绍 本文介绍Go语言中数组(array)操作(数组声明、元素访问与修改、数组遍历、关系运算、切片创建、多维数组)等相关知识。 基础 数组 数组是具有相同数据类型的…...
2024软件设计师备考讲义——UML(统一建模语言)
UML的概念 用例图的概念 包含 <<include>>扩展<<exted>>泛化 用例图(也可称用例建模)描述的是外部执行者(Actor)所理解的系统功能。用例图用于需求分析阶段,它的建立是系统开发者和用户反复…...
HTML——1.简介、基础、元素
一、简介 HTML(HyperText Markup Language)是一种用于创建网页的标记语言。它使用标记(tag)来描述网页的结构和内容。HTML被用于定义网页中的文本、图像、链接、多媒体以及其他元素的排列和呈现方式。 HTML文档是由一系列的HTML…...
Rust 标准库:std::env::args() 函数简介
std::env::args() 是 Rust 标准库中的一个函数,它属于 std::env 模块。这个函数用于获取并返回一个迭代器,该迭代器包含了程序运行时从命令行传入的所有参数。 当你运行一个 Rust 程序并从命令行传递参数时,例如: my_rust_progr…...
【Blockchain】GameFi | NFT
Blockchain GameFiGameFi顶级项目TheSandbox:Decentraland:Axie Infinity: NFTNFT是如何工作的同质化和非同质化区块链协议NFT铸币 GameFi GameFi是游戏和金融的组合,它涉及区块链游戏,对玩家提供经济激励,…...
【Docker】搭建安全可控的自定义通知推送服务 - Bark
【Docker】搭建安全可控的自定义通知推送服务 - Bark 前言 本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建。 简介 Bark是一款为Apple设备用户设计的开源推送服务应用,它允许开发者、程序员以及一般用户将信息快速推送到他们自己的iPhone、iPad等设备上…...
国内IP代理软件电脑版:深入解析与应用指南
随着互联网技术的快速发展,网络活动日益丰富多样,IP代理软件也因其独特的功能和优势,成为许多电脑用户不可或缺的工具。在国内,由于网络环境的复杂性和特殊性,选择一款稳定、高效的IP代理软件电脑版尤为重要。虎观代理…...
面向对象设计之开闭原则
设计模式专栏: http://t.csdnimg.cn/4Mt4u 目录 1.引言 2.如何理解“对扩展开放、对修改关闭” 3.修改代码就意味着违反开闭原则吗 4.如何做到“对扩展开放、对修改关闭” 5.如何在项目中灵活应用开闭原则 6.总结 1.引言 开闭原则(Open Closed Principle&…...
【项目技术介绍篇】若依项目代码文件结构介绍
作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是࿰…...
实现DevOps需要什么?
实现DevOps需要什么? 硬性要求:工具上的准备 上文提到了工具链的打通,那么工具自然就需要做好准备。现将工具类型及对应的不完全列举整理如下: 代码管理(SCM):GitHub、GitLab、BitBucket、SubV…...
Linux小程序: 手写自己的shell
注意: 本文章只是为了理解shell内部的工作原理, 所以并没有完成shell的所有工作, 只是完成了shell里的一小部分工作 #include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include &l…...
javaSwing租户管理系统
简介 欢迎阅读本篇博客,今天我将为大家介绍一个基于Java Swing开发的租户管理系统。该系统具有登录、注册、添加租户、查询租户信息、修改租户信息、删除租户、修改密码、退出登录等功能模块,旨在提供一个便捷的租户管理解决方案。 一、项目介绍 该租…...
cesium实现竖立的圆
cesium中的圆是平行于地面的,想实现竖起来的圆可以使用ellipsoid,设置其中一个轴的radii值为一个很小的值,比如0.00001,则这个轴上的宽度就会非常小,看起来就是一个圆面。 一、画圆ellipse,此处也把画圆的代…...
汽车电子行业知识:智能汽车电子架构
文章目录 3.智能汽车电子架构3.1.汽车电子概念及发展3.2.汽车电子架构类型3.2.1.博世汽车电子架构3.2.2.联合电子未来汽车电子架构3.2.3.安波福汽车电子架构3.2.4.丰田汽车电子架构3.2.5.华为汽车电子架构 3.智能汽车电子架构 3.1.汽车电子概念及发展 汽车电子是车体汽车电子…...
LeetCode146:LRU缓存
leetCode:146. LRU 缓存 题目描述 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类: LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓存中&#x…...
【Unity音游制作】你玩过节奏大师吗?(Koreographe插件导入游戏主体)【一】
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:Uni…...
高效解决Ubuntu Server 18.04.1 LTS 64bit更新gdb8.1.1到gdb12.1
文章目录 问题解决步骤 问题 因为需要用到gdb一些指令,但是gdb8.x好像存在普遍的问题,实现不了某些指令,比方说set detach-on-fork on,升级版本也没有比较好的教程 经过我不断的试错,我终于升级成功了!&a…...
【公示】2023年度青岛市级科技企业孵化器拟认定名单
根据《青岛市科技企业孵化器管理办法》(青科规〔2023〕1号)(以下简称《管理办法》)、《关于开展2023年度市级科技企业孵化器认定申报工作的通知》,经申报受理、区市推荐、形式审查、专家评审及现场核查等程序ÿ…...
【软件安装】(十四)Ubuntu22.04安装Psensor硬件监视器
一个愿意伫立在巨人肩膀上的农民...... Ubuntu系统硬件运行查询输入指令太繁琐,终端展示不直观,因此这款具有可视化监控Ubuntu系统下当前电脑的硬件CPU(中央处理器)、GPU(显卡)和硬盘等温度等功能ÿ…...
数组合并小程序
题目: 输入有序数组a, b, 不使用排序算法,及额外数组,按大小顺序合并a, b数组,元素不重复; 思路: 1. 如果比插入的数组大,那么往后插入,如果继续有大的,就移动位置插入…...
python练习二
# Demo85def pai_xu(ls_test):#创建一个列表排序函数命名为pai_xu# 对创建的函数进行注释"""这是一个关于列表正序/倒序排列的函数:param ls_test: 需要排序的列表:return:"""ls1 [int(ls_test[i]) for i in range(len(ls_test))]#对input输入的…...
专升本-数字媒体
数字媒体 概念: 媒体:是信息的载体,传播信息的媒介,能为信息的传播提供平台 数字媒体:多重媒体,使用文字,数据,图像,声音等各种媒体 数字媒体技术:利用计…...
蓝桥杯算法题-发现环
问题描述 小明的实验室有N台电脑,编号1~N。原本这N台电脑之间有N-1条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。 不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增…...
Oracle存数字精度问题number、binary_double、binary_float类型
--表1 score是number(10,5)类型 create table TEST1 (score number(10,5) ); --表2 score是binary_double类型 create table TEST2 (score binary_double ); --表3 score是binary_float类型 create table TEST3 (score binary_float );实验一:分别往三张表插入 小数…...
Java封装最佳实践:打造高内聚、低耦合的优雅代码~
个人主页:秋风起,再归来~ 文章专栏:javaSE的修炼之路 个人格言:悟已往之不谏,知来者犹可追 克心守己,律己则安! 1、封装 1.1 封装的概念 面向对象程序三大…...
开源,微信小程序-超级计算器T3000 简介
笔者于四年前自学微信小程序开发,这个超级计算器T3000就是当时的练习作品。超级计算器T3000的功能有很多,其中的核心技术是矩阵计算,使用的工具库是math.js,其次是复杂运算和分式运算。关于math.js的使用,可以参考另一…...
Dimitra:基于区块链、AI 等前沿技术重塑传统农业
根据 2023 年联合国粮食及农业组织(FAO)、国际农业发展基金(IFAD)等组织联合发布的《世界粮食安全和营养状况》报告显示,目前全球约有 7.35 亿饥饿人口,远高于 2019 年的 6.13 亿,这意味着农业仍…...
降低项目延期概率的5大注意事项
降低项目延期概率对项目非常重要。因为项目延期往往会导致成本增加,降低客户满意度,影响企业在市场上的竞争力,造成资源浪费。因此,我们需要降低项目延期概率,实现企业长远发展。 而降低项目延期概率,一般来…...
在VUE页面调用Extjs中定义的方法
VUE版本:VUE2 EXTJS版本:4.2.6 1、在extjs页面上写监听事件(主要利用了window.addEventListener来监听message事件 window.addEventListener("message", function(event) {// 这里写监听到消息后的逻辑,event.data就是…...
【独立开发前线】Vol.32 能够坚持下去的人并没有你想象的那么多
如果你有一个博客,你就已经超过了80%的独立开发者; 如果你每周更新自己的博客,你就已经超过了90%的独立开发者; 如果你每天更新自己的博客,你就已经超过了99%的独立开发者; 能够坚持下去的人并没有你想象…...
政府制作网站收费/八百客crm系统登录入口
往期热门文章:1、牛客网:为什么不能将实数作为 HashMap 的 key? 2、RedisJson发布官方性能报告,性能碾压ES和Mongo 3、分布式数据一致性思考-B端系统一致性 4、Java字符串拼接的五种方法,哪种性能最好? 5、…...
内网电脑做网站/网站搭建
番外篇:VS转换到 COFF 期间失败: 文件无效或损坏番外篇:VS转换到 COFF 期间失败: 文件无效或损坏错误截图处理方法和结果运行番外篇:VS转换到 COFF 期间失败: 文件无效或损坏 笔者在进行NCRE考试期间,需要模拟考试一下࿰…...
网站解析出问题 邮件收不到了/seo搜索推广
转自作者:听海8 -点击可查看原文 1.1 进阶篇案例一 案例:爬取豆瓣电影 top250( movie.douban.com/top250 )的电影数据,并保存在 MongoDB 中。 案例步骤: 第一步:明确爬虫需要爬取的内容。 我们做爬虫的时候&#…...
wordpress接收表单/注册域名在哪里注册
一.凯撒密码加密代码思路基本思路:设置明文 和 位移步长(秘钥)将明文转成小写,准备 明文字节切片 与 密文切片循环将每个明文字符 按照 位移步长 做位移,存入密文切片返回密文导入包import ("fmt""strings" // 包含字符串…...
java如何网站开发/长沙优化科技有限公司
【资料题】教师出示饼干盒,问亮亮里面有什么,亮亮说 “饼干”。教师打开饼干盒,亮亮发现里面装的是蜡笔。教师盖上盖子后再问“欣欣没有看过这个饼干盒,等一会儿我去问欣欣盒子里面装的是什么,你猜她么怎么回答 ? ”亮亮很快就说:“蜡笔” 问题: (1) 亮亮更可能是属于哪个年龄…...
做网站哪个公司最好/搜狗推广
少人做的水题。直接模拟即可,不算dp题。 代码: #include<iostream> #include<fstream>using namespace std;int a[10001][7]; int n;int ok(int s,int t){int i0;if(t1){imax(a[s][2],i);imax(a[s][3],i);imax(a[s][4],i);imax(a[s][5],i);}…...