linux数组操作 增删改查,linuxea:go数组与数组增删改查(19)

5c1967c5325842cec010c6abd3e07965.gif

复合数据类型是集合类,并且可以存储多个单值。

在golang中存储的数组是相同的数据类型,并且长度也是其中的一个属性。在go中,数组的长度一旦定义,就不可变。如果声明了长度的变量,只能赋值相同的长度的数组

数组是具有相同数据类型的数据项组成一组长度固定的序列,数据项叫做数组的元素,数组的长度必须是非负整数的常量,长度也是类型的一部分。

1.2 数组的声明

声明数组组成的元素类型以及存储的元素长度,一旦数组长度设置后不可以更改,数组的每个元素会根据对应类型的零值进行初始化。

使用var进行声明即可,长度和类型

var nums [10]int

如上,数组使用中括号[],上述表示一个长度为10的int类型数组。

package main

import "fmt"

func main() {

var nums [10]int

fmt.Printf("%T ", nums)

fmt.Println("\n", nums)

}

我们可以打印下这个nums

[root@www.linuxea.com /opt/Golang/work2]# go run array.go

[10]int

[0 0 0 0 0 0 0 0 0 0]

!!! note

当定义了[10]int的时候,就会在内存申请10个int类型的元素。元素内的值是对应类型的零值存放。

所以,这里打印的是10个0。

我们可以多定义几个其他类型

package main

import "fmt"

func main() {

var nums [10]int

var t1 [5]bool

var t2 [3]string

fmt.Printf("%T ", nums)

fmt.Println("\n", nums)

fmt.Println(t1)

fmt.Printf("%q",t2)

}

%q可以打印空字符串带"",便于查看

运行结果如下:

[root@www.linuxea.com /opt/Golang/work2]# go run array.go

[10]int

[0 0 0 0 0 0 0 0 0 0]

[false false false false false]

["" "" ""]

分别是,10个0,5个false,3个空字符串

1.2数组的赋值

赋值的时候,需要和定义时候一样,假如你赋值如下:

nums = [10]int{}

这和上面定义的变量是一样,因为{}是空,都会是0值。

我们设置1~5

package main

import "fmt"

func main() {

var nums [10]int

nums = [10]int{1,2,3,4,5}

fmt.Println(nums)

}

这里也可以简短声明: nums := [10]int{1,2,3,4,5}

运行:

[root@www.linuxea.com /opt/Golang/work2]# go run array.go

[1 2 3 4 5 0 0 0 0 0]

这时候你会发现,赋值是正确了,但是仍然打印了10个元素,前五个被赋值了,没有赋值的仍然是0.

1.3数组索引赋值

我们在换种方式,对第一个和最后一个进行赋值。

如果要进行这种赋值操作,必须使用索引,第一个就是0,最后一个就是9。

将第一个赋值为10,最后一个赋值为20,如下:

nums = [10]int{0:10,9:20}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array.go

[10 0 0 0 0 0 0 0 0 20]

我们也可以使用[...]来省略长度,但是必须输够长度

我们可以使用[...]的方式来进行自动推导有多少数组,而不是设置一个固定的值

package main

import "fmt"

func main() {

var nums [10]int

nums = [...]int{0:10,9:20}

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array.go

[10 0 0 0 0 0 0 0 0 20]

或者这样

nums02 := [...]int{1,2,3,4}

package main

import "fmt"

func main() {

nums02 := [...]int{1,2,3,4}

fmt.Println(nums02)

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array1.go

[1 2 3 4]

1.4数组的操作

定义nums01和nums02数组进行判断

package main

import "fmt"

func main() {

nums01 := [...]int{0,1,2,3}

nums02 := [...]int{1,2,3,4}

fmt.Println(nums02 == nums01)

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array1.go

false

或者不等于

package main

import "fmt"

func main() {

nums01 := [...]int{0,1,2,3}

nums02 := [...]int{1,2,3,4}

fmt.Println(nums02 != nums01)

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array1.go

true

!!! warning

如果长度不相等是不能进行运算.

可以使用len计算数组的长度

1.5数组的索引操作

nums02 := [...]int{1,2,3,4}

我们现在获取位于2和3的索引位置的数据.

索引范围必须在可选值内 ,0~ len-1

package main

import "fmt"

func main() {

nums02 := [...]int{1,2,3,4}

fmt.Println(nums02[1],nums02[2])

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array1.go

2 3

修改

将索引0改成666

nums02 := [...]int{1,2,3,4}

nums02[0] = 666

而后在打印这个修改的索引0

fmt.Println(nums02[0])

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array1.go

666

这里已经被修改。

1.6数组的遍历

使用for遍历上述的数组

package main

import "fmt"

func main() {

nums02 := [...]int{1,2,3,4}

nums02[0] = 666

for i :=0; i< len(nums02); i++{

fmt.Println(i,":",nums02[i])

}

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array1.go

0 : 666

1 : 2

2 : 3

3 : 4

for range遍历

package main

import "fmt"

func main() {

nums02 := [...]int{1,2,3,4}

nums02[0] = 666

for index,value := range nums02 {

fmt.Println(index,":",value)

}

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array1.go

0 : 666

1 : 2

2 : 3

3 : 4

0 : 666

我们也可以使用下划线,空白符来不接收

package main

import "fmt"

func main() {

nums02 := [...]int{1,2,3,4}

nums02[0] = 666

for _,value := range nums02 {

fmt.Println(value)

}

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array1.go

666

2

3

4

###1.7数组的切片操作

切片可以获取一部分,字符串和数组都可以获取一部分。如下

和之前字符串一样,end不能超过其长度,最多和长度一样。

我们设置start为0,end为3,我们先看下这个切片的类型

package main

import "fmt"

func main() {

var nums [10]int

nums = [10]int{1,2,3,4,5}

fmt.Printf("%T",nums[1:10])

}

运行

[root@www.linuxea.com /opt/Golang/work2]# go run array.go

[]int

数组切片之后的并不是是数组,而是另外的切片。

切片在字符串是用字符串的某一段组成的新的字符串。

切片在数组是数组中的元素组成一个新的集合。

在切片之后还可以跟一个值,这个值是容量,但是仍然不可以超过最大值。

package main

import "fmt"

func main() {

var nums [10]int

nums = [10]int{1,2,3,4,5}

fmt.Printf("%T",nums[1:10])

fmt.Printf("%T",nums[1:10:10])

}

[root@www.linuxea.com /opt/Golang/work2]# go run array.go

[]int[]int

除非另有说明,否则本站上的内容根据以下许可进行许可: CC署名-非商业性使用-相同方式共享4.0国际许可协议4.0进行许可

本文作者:www.linuxea.com for Mark

文章链接:http://www.linuxea.com/2494.html (转载请注明本文出处和本章链接)

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

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

相关文章

C语言的特点与创建的基本步骤是什么

C语言的特点与创建的基本步骤是&#xff1a;C 语言特点&#xff1a;1.C语言是一种成功的系统描述语言&#xff0c;用C语言开发的UNIX操作系统就是一个成功的范例;2.同时C语言又是一种通用的程序设计语言&#xff0c;在国际上广泛流行。世界上很多著名的计算公司都成功的开发了不…

谷歌guava_Google Guava:您永远不会知道的5件事

谷歌guava每个开发人员可以使用哪些鲜为人知的Google Guava功能&#xff1f; 它是那里最受欢迎的库之一&#xff0c;它是开源的&#xff0c;您可能已经知道了&#xff0c;它来自人们玩Quidditch作为一项真正的运动的地方&#xff08;至少在The Internship上 &#xff09;。 它…

C语言strcmp函数用法

C语言strcmp函数用法strcmp函数语法为“int strcmp(char *str1,char *str2)”&#xff0c;其作用是比较字符串str1和str2是否相同&#xff0c;如果相同则返回0&#xff0c;如果不同&#xff0c;前者大于后者则返回1&#xff0c;否则返回-1。简单示例&#xff1a;char a[]"…

Linux C 服务器端这条线怎么走?

在校学生的编程语言和数据结构的基础还不错&#xff0c;我认为应该在《操作系统》和《计算机体系结构》这两门课上下功夫&#xff0c;然后才去读编程方面的 APUE、UNP 等书。下面简单谈谈我对学习这两门课的看法和建议&#xff0c;都是站在服务端程序员的角度&#xff0c;从实用…

tp3 默认模块 默认方法_您需要了解的有关默认方法的所有信息

tp3 默认模块 默认方法因此&#xff0c;默认方法是……昨天的新闻&#xff0c;对不对&#xff1f; 是的&#xff0c;但是使用了一年之后&#xff0c;积累了很多事实&#xff0c;我想将这些事实收集在一个地方&#xff0c;供刚开始使用它们的开发人员使用。 甚至有经验的人都可以…

存储过程 锁定并发_Java并发教程–锁定:显式锁定

存储过程 锁定并发1.简介 在许多情况下&#xff0c;使用隐式锁定就足够了。 有时&#xff0c;我们将需要更复杂的功能。 在这种情况下&#xff0c; java.util.concurrent.locks包为我们提供了锁定对象。 当涉及到内存同步时&#xff0c;这些锁的内部机制与隐式锁相同。 区别在于…

C语言 PK 各大编程语言

今天分享一篇关于C语言为何如此有魅力的文章&#xff0c;如果你还在学习哪门语言的路口抉择&#xff0c;建议可以认真看看~以下为CSDN译文&#xff1a;没有什么技术可以应用长达50年之久&#xff0c;除非它真的比大多数其他东西都要好用——对于一种计算机行业的技术来说尤其如…

在switch语句中,case后的标号只能是什么?

switch语句用于基于不同条件执行不同动作。语法格式&#xff1a;switch (变量表达式){case 常量1: 语句;break;case 常量2: 语句;break;case 常量3: 语句;break;...case 常量n: 语句;break;default: 语句;break;}switch语句是一个条件选择语句&#xff0c;找到相同的…

C语言——结构体链表,附完整示例

引用自身的结构体&#xff0c;一个结构体中有一个或多个成员的基类型就是本结构体类型时&#xff0c;说明这个结构体可以引用自己&#xff0c;所以称作引用自身的结构体。例如下面的结构体&#xff1a;struct link{ char ch; struct link *p} a;p是一个可以指向struct link类型…

jax-rs jax-ws_快速浏览JAX-RS请求与方法匹配

jax-rs jax-ws在本文中&#xff0c;我们来看一下JAX-RS中与资源方法匹配的HTTP请求 。 它是JAX-RS的最基本功能之一。 通常&#xff0c;使用JAX-RS API的开发人员不会接触&#xff08;或真正不需要知道&#xff09; 匹配过程的细节&#xff0c;请放心&#xff0c;由于我们的RES…

C语言知识总结——宏,枚举

1、define宏定义以#号开头的都是编译预处理指令&#xff0c;它们不是C语言的成分&#xff0c;但是C程序离不开它们&#xff0c;#define用来定义一个宏&#xff0c;程序在预处理阶段将用define定义的来内容进行了替换。因此在程序运行时&#xff0c;常量表中并没有用define定义的…

C语言知识总结——共用体

union 共用体&#xff08;联合体&#xff09;在进行某些算法的C语言编程的时候&#xff0c;需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术&#xff0c;几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构&#xff0c;在C语言中 以关键字union…

jboss入门_JBoss Forge NetBeans集成–入门

jboss入门JBoss Forge是构建基于Maven的Java EE项目的最快方法。 因此&#xff0c;它已经具有了令人敬畏的功能&#xff0c;使您作为开发人员的生活更加轻松。 在大多数情况下&#xff0c;使用Forge的人们可能会对创建Web应用程序感兴趣。 有很多方法可以开始使用Forge基础知识…

这几道 C/C 题涉及你的知识盲区?

8个C语言面试题&#xff0c;涉及指针、运算、函数、内存&#xff0c;看看你能做出几个&#xff01;1.gets()函数问&#xff1a;请找出下面代码里的问题&#xff1a;#include int main(void) {char buff[10];memset(buff, 0, sizeof(buff));gets(buff); //gets不检查输入的字符…

logback redis_使用Spring Boot和Logback登录到Redis

logback redis在进行集中式日志记录时&#xff0c;例如使用Elasticsearch&#xff0c;Logstash和Kibana或Graylog2&#xff0c;您可以为Java应用程序提供多个选项。 您既可以编写标准的应用程序日志&#xff0c;也可以使用Logstash解析这些日志&#xff0c;这些日志既可以直接使…

C 与 C 的真正区别在哪里?

C 与 C 的真正区别在哪里&#xff1f;C是中餐厨师的菜刀&#xff0c;做啥菜就那一把刀&#xff0c;切菜切肉切鱼&#xff0c;都是这一把刀&#xff0c;刀工好的师傅&#xff0c;豆腐都能切成一朵花。无论你提什么概念&#xff0c;都能用指针给你做出来&#xff0c;如果不行&…

html 怎么置顶表格,表格(Table)表头固定,内容上滚【5个实例】

当表格往上滚动的时候&#xff0c;表头固定不动&#xff0c;这样可以让用户时刻看清每一列的数据含义&#xff0c;这是人性化的设计&#xff0c;充分考虑了用户使用体验。本文将通过5个实例&#xff0c;来介绍这种表格设计。用户可通过下载源码&#xff0c;直接应用于自己的项目…

C语言变量的定义包括变量存储类型和变量的什么?

C语言变量的定义包括变量存储类型和变量的名称。C语言定义变量的格式&#xff1a;“数据类型 变量名;”&#xff0c;“数据类型”表示想要存储什么类型的数据&#xff0c;“变量名”就是你想给这个变量起个什么名字&#xff0c;通常都是用字母。变量的定义定义变量的格式非常简…

C语言代码注释必须用/**/ , 你没看错~

事情是这样的&#xff0c;有人离职&#xff0c;公司调我补缺。那个系统一直有个工程师在维护&#xff0c;参与该系统的新人来了又走&#xff0c;他始终泰然自若。刚过去一个礼拜&#xff0c;我就心下窃吼&#xff1a;“坑爹啊!”&#xff0c;也彻底体会到什么叫---绝对的权威、…

html文档的基本类型,HTML(网页的文档类型介绍)

一个html文件的第一行代码通常就是用于声明网页文档类型&#xff0c;其格式是:这一行不是属于标签文档类型:可以理解为不同的html版本&#xff01;html4.0 或4.01版本基本固定&#xff0c;但又有分化:严格性:了用的标签和属性相对较少&#xff0c;但能兼容更多的浏览器。宽松型…