首页 > 其他分享 >【入门】Go语言数组详解

【入门】Go语言数组详解

时间:2023-03-28 16:38:36浏览次数:31  
标签:初始化 入门 fmt var 详解 数组 Go main class

目录

一、Go语言数组简介

1.1 什么是数组?

  • 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。

  • 因为数组的长度是固定的,所以在Go语言中很少直接使用数组。

  • 数组可以存放多个同一类型数据。数组也是一种数据类型,在Go中,数组是值类型。

  • 数组的每个元素都可以通过索引来访问,索引起始0开始到数组长度减1的位置,内置函数len()可以返回数组中元素的个数。

1.2 数组声明语法

var 数组变量名 [元素数量]Type
  • 数组变量名:数组声明及使用时的变量名
  • 元素数量:数组的元素数量
  • Type:可以是任意基本类型,也可以是数组本省,类型为数组本身时,可以实现多维数组。

举个例子:创建int类型的class数组,其中元素数量为5

	var class [5]int

二、数组的基本操作

2.1 数组的定义及赋值

package main

import (
	"fmt"
)

func main() {
	var class [5]int // 定义数组
	for i := 0; i < len(class); i++ {
		class[i] = i + 100 // 数组赋值
	}
	fmt.Println(class)
}

代码输出内容:

[100 101 102 103 104]

2.2 数组的初始化

数组初始化是指在声明数组时赋值。

2.2.1 指定长度初始化

指定长度和初始化值,初始化数组中 {} 中的元素个数不能大于 [] 中的数字:

注意: 初始化时是带有 = 号的。

func main() {
	var class = [4]string{"zhangsan", "lisi", "wangwu", "maliu"}
	fmt.Printf("%v", class)
}

2.2.2 不指定长度初始化

当我们不指定长度的时候,也就是[]中不写入内容,GO语言默认会根据元素的个数来设置数组的大小。

package main

import (
	"fmt"
)

func main() {
	var class = [...]string{"zhangsan", "lisi", "wangwu", "maliu"}
	fmt.Printf("%v", len(class))
}

或者使用 ...如下:

package main

import (
	"fmt"
)

func main() {
	var class = [...]string{1: "lisi", 3: "maliu"}
	fmt.Println(len(class))
}

代码输出内容:

4

2.2.3 根据索引初始化指定元素

只初始化索引是 1和3 的元素

package main

import (
	"fmt"
)

func main() {
	var class = []string{1: "lisi", 3: "maliu"}
	fmt.Println(class)
}

三、数组的遍历

3.1 传统for循环遍历

package main

import (
	"fmt"
)

func main() {
	var arr = [...]float64{1.1, 1.2, 1.3, 1.4, 1.5, 1.6}
	for i := 0; i < len(arr); i++ {
		fmt.Println(arr[i])
	}
}

3.2 for range循环遍历

package main

import (
	"fmt"
)

func main() {
	var arr = [...]float64{1.1, 1.2, 1.3, 1.4, 1.5, 1.6}
	for i, v := range arr {
		fmt.Printf("index=%d\tvalue=%v\n", i, v)
	}
}

代码输出内容:

index=0	value=1.1
index=1	value=1.2
index=2	value=1.3
index=3	value=1.4
index=4	value=1.5
index=5	value=1.6

四、数组综合练习

4.1 案例一:比较两台数组元素是否一致

package main

import "fmt"

func main() {
	var arr1 = [5]int{1, 2, 3, 4, 5}
	var arr2 = [5]int{1, 2, 3, 4, 5}
	b := Compare(arr1, arr2)
	if b {
		fmt.Println("数组一致!")
	} else {
		fmt.Println("数组不致!")
	}
}

func Compare(n1 [5]int, n2 [5]int) bool {
	var b bool = true
	if len(n1) == len(n2) {
		for i := 0; i < len(n1); i++ {
			if n1[i] == n2[i] {
				continue
			} else {
				b = false
				break
			}
		}
	} else {
		b = false
	}
	return b
}

标签:初始化,入门,fmt,var,详解,数组,Go,main,class
From: https://www.cnblogs.com/qinziteng/p/17265242.html

相关文章

  • (转)gorm系列-model
    原文:https://www.cnblogs.com/zisefeizhu/p/12788017.htmlGormModel在使用ORM工具时,通常我们需要在代码中定义模型(Models)与数据库中的数据表进行映射,在GORM中模型(Models......
  • 用 Go 剑指 Offer 04. 二维数组中的查找
    在一个n*m的二维数组中,每一行都按照从左到右 非递减 的顺序排序,每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数......
  • C++基础入门笔记
    C++基础入门1数据类型C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存1.1整型作用:整型变量表示的是整数类型的数据C++中整数类......
  • mongodb和redis设计原理简析
    redis:1、NIO通信  因都在内存操作,所以逻辑的操作非常快,减少了CPU的切换开销,所以为单线程的模式(逻辑处理线程和主线程是一个)。  reactor模式,实......
  • CSDN博客自定义栏目——Google、百度、必应站内搜索框
    百度的(搜到的内容不够精确)<formmethod="get"target="_blank"action="https://www.baidu.com/s"><divstyle="background-color:white"><inp......
  • 用 Go 剑指 Offer 09. 用两个栈实现队列
    用两个栈实现一个队列。队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHe......
  • hbase shell 基础和常用命令详解
    HBase是一个分布式的、面向列的开源数据库,源于google的一篇论文《bigtable:一个结构化数据的分布式存储系统》。HBase是GoogleBigtable的开源实现,它利用HadoopHDFS作为其......
  • 使用golang+antlr4构建一个自己的语言解析器(完结篇)
    Goland中Antlr4插件在goland中安装Antlr4插件,用于识别输入的字符在在语法文件中生成的语法树的样子,大概就是如下的摸样下载步骤:1.点击文件中的设置选项2.在插件目录......
  • 二维数组详解
    6928:yym下象棋描述 yym是一个喜欢玩象棋的人,现在yym的棋盘上有一匹马,如果你们不知道马的走法,请看下图:(棋盘大小为9*9)现在,yym想要一步吃掉它周围的其他棋子(不考虑......
  • Django用户权限通过Token校验
    最好是将用户权限验证和Token验证放在Django中间件中,以便对所有视图函数进行校验。下面是一段示例代码,演示了如何实现中间件来进行用户权限验证和Token验证middleware.py......