go语言数组(详细介绍)

简介: go语言数组(详细介绍)

介绍Go语言的数组使用方法


(一)数组简介


  数组是最简单的数据结构之一,是具有相同唯一类型的一组已编号且长度固定的数据项序列
  (类型的话可以是整形、字符串、自定义数据类类型)数组存储数据使得数据更方便的存储查询


(二)go语言数组声明


①先声明后初始化直接初始化


声明数组的类型、大小
  var myint [5]int
对数组进行赋值
  for i := 0; i < 5; i++ {
    myint[i] = i
  }


②直接初始化


一维数组:
  var 数组名 [数组大小] 数组元素的数据类型{}  //{}代表将数组声明的同时将他初始化一下
  例如:
  var myarray1 = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
多维数组:
  二维数组是最简单的多维数组
  声明方式如下:
    var 数组名 [][][]...[][]数组类型
  二维数组声明
    var 数组名 [x][y] 数据类型
    可以认为x是行y是列
  例如:
    var mytwostr = [2][3]int{{1, 2, 3},
                {2, 3, 4}}


(三)对数组内的元素进行操作


(0)遍历数组


①使用range关键字


  var myarray1 = [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
  //这里 _ 空白字符前面已经介绍过,这里是为了吸收数组的索引,temp内存的是数值
  for _, temp := range myarray1 {
    fmt.Println(temp)
  }


②一般的遍历方式


  var a = [3]string{"我叫小谬", "缪", "哥"}
  for i := 0; i < len(a); i++ {
    fmt.Println(a[i])
  }


(1)增(增删改查比较简单就不全上代码了)


对数组进行添加数据,一般将数组添加到末尾,采用直接赋值的方式


(2)删

  删除数组内的东西一般是将被删除元素后面的元素依次向前赋值将原来的数据覆盖掉


删除掉数组内数值为3的数据
  myarray := [7]int{1, 6, 3, 7, 4, 2, 5}
  for k, v := range myarray {
    if v == 3 {
      for i := k; i < len(myarray)-1; i++ {
        //使用后面的数据对其进行覆盖
        myarray[i] = myarray[i+1]
      }
      //将末尾数据赋为初始值
      myarray[len(myarray)-1] = 0
    }
  }


(3)改


  修改数据的话,找到要修改的数据,直接拿新的数据对其进行覆盖


将数组内的3修改为10
  myarray := [7]int{1, 6, 3, 7, 4, 2, 5}
  for k, v := range myarray {
    if v == 3 {
      myarray[k]=10
    }
  }


(4)查


采用下标直接将需要的数据拿出来


(四)数组作为参数


一定要区分Go语言中的数组与切片,切片最明显的特征是不用指定大小,可以自动进行扩容(后面会详细介绍)


  一、直接将数组转换为切片参数传进去
  二、设置一个等长的数组作为参数(长度不匹配编译报错)


//两种传参方式
package main
import "fmt"
//这个参数实际上是一个切片
func p(a []int) {
  fmt.Println(a)
}
//这个参数是一个数组
func p1(a [7]int) {
  fmt.Println(a)
}
func main() {
  //声明一个一维数组并进行初始化
  myarray := [7]int{1, 6, 3, 7, 4, 2, 5}
  //通过传参打印数组内的东西
  //这种切片传参的方式,传进的参数也必须是切片
  p(myarray[:])
  //这种传参方式直接将数组名传进去
  p1(myarray)
}


8e4b87bb6c9f4f52ae4958a227b63b72.png



目录
相关文章
|
17天前
|
Go
go语言中的数据类型
go语言中的数据类型
13 0
|
23天前
|
Go 开发者
掌握Go语言:Go语言结构体,精准封装数据,高效管理实体对象(22)
掌握Go语言:Go语言结构体,精准封装数据,高效管理实体对象(22)
|
23天前
|
安全 Go
掌握Go语言:Go语言通道,并发编程的利器与应用实例(20)
掌握Go语言:Go语言通道,并发编程的利器与应用实例(20)
|
23天前
|
存储 缓存 安全
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)
掌握Go语言:Go语言中的字典魔法,高效数据检索与应用实例解析(18)
|
5天前
|
数据采集 存储 Go
使用Go语言和chromedp库下载Instagram图片:简易指南
Go语言爬虫示例使用chromedp库下载Instagram图片,关键步骤包括设置代理IP、创建带代理的浏览器上下文及执行任务,如导航至用户页面、截图并存储图片。代码中新增`analyzeAndStoreImage`函数对图片进行分析和分类后存储。注意Instagram的反爬策略可能需要代码适时调整。
使用Go语言和chromedp库下载Instagram图片:简易指南
|
23天前
|
存储 安全 Go
掌握Go语言:Go语言类型转换,无缝处理数据类型、接口和自定义类型的转换细节解析(29)
掌握Go语言:Go语言类型转换,无缝处理数据类型、接口和自定义类型的转换细节解析(29)
|
1天前
|
安全 Go 开发者
Golang深入浅出之-Go语言并发编程面试:Goroutine简介与创建
【4月更文挑战第22天】Go语言的Goroutine是其并发模型的核心,是一种轻量级线程,能低成本创建和销毁,支持并发和并行执行。创建Goroutine使用`go`关键字,如`go sayHello(&quot;Alice&quot;)`。常见问题包括忘记使用`go`关键字、不正确处理通道同步和关闭、以及Goroutine泄漏。解决方法包括确保使用`go`启动函数、在发送完数据后关闭通道、设置Goroutine退出条件。理解并掌握这些能帮助开发者编写高效、安全的并发程序。
10 1
|
1天前
|
人工智能 Go 调度
掌握Go并发:Go语言并发编程深度解析
掌握Go并发:Go语言并发编程深度解析
|
1天前
|
SQL 关系型数据库 MySQL
Golang数据库编程详解 | 深入浅出Go语言原生数据库编程
Golang数据库编程详解 | 深入浅出Go语言原生数据库编程
|
2天前
|
Go 开发者
Golang深入浅出之-Go语言流程控制:if、switch、for循环详解
【4月更文挑战第21天】本文介绍了Go语言中的流程控制语句,包括`if`、`switch`和`for`循环。`if`语句支持简洁的语法和初始化语句,但需注意比较运算符的使用。`switch`语句提供多分支匹配,可省略`break`,同时支持不带表达式的形式。`for`循环有多种形式,如基本循环和`for-range`遍历,遍历时修改原集合可能导致未定义行为。理解并避免易错点能提高代码质量和稳定性。通过实践代码示例,可以更好地掌握Go语言的流程控制。
11 3
Golang深入浅出之-Go语言流程控制:if、switch、for循环详解