成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起聊聊Go語言中的數組和切片

開發 前端
多維數組是數組的數組,也就是說數組中的元素又是數組。多維數組的定義形式為var arrayName [size1][size2]...[sizeN]dataType?,其中size1、size2?等是各個維度的大小,dataType是數組中元素的數據類型。

數組

定義

一維數組

一維數組是具有相同數據類型的固定大小的數據序列。在Go語言中,一維數組的定義形式為var arrayName [size]dataType,其中arrayName是數組的名稱,size是數組的大小,dataType是數組中元素的數據類型。

多維數組

多維數組是數組的數組,也就是說數組中的元素又是數組。多維數組的定義形式為var arrayName [size1][size2]...[sizeN]dataType,其中size1、size2等是各個維度的大小,dataType是數組中元素的數據類型。

使用

數組可以通過索引來訪問和修改元素,索引從0開始計數。例如,對于一維數組arr,可以通過arr[index]來訪問第index個元素;對于多維數組arr,可以通過arr[index1][index2]...[indexN]來訪問多維數組中的元素。

package main


import "fmt"


func main() {
	// 一維數組的訪問和修改
	arr := [5]int{1, 2, 3, 4, 5}
	fmt.Println("一維數組:", arr)
	fmt.Println("第二個元素:", arr[1]) // 輸出:2


	// 修改第三個元素為10
	arr[2] = 10
	fmt.Println("修改后的數組:", arr)


	// 多維數組的訪問和修改
	matrix := [2][3]int{
		{1, 2, 3},
		{4, 5, 6},
	}
	fmt.Println("多維數組:", matrix)
	fmt.Println("第二行第三個元素:", matrix[1][2]) // 輸出:6


	// 修改第一個元素為100
	matrix[0][0] = 100
	fmt.Println("修改后的多維數組:", matrix)
}

上面的代碼演示了如何訪問和修改一維數組和多維數組中的元素。

初始化

Go語言中數組的初始化有兩種方式:一種是使用數組字面量直接初始化數組,另一種是通過索引逐個賦值來初始化數組。

package main


import "fmt"


func main() {
	// 使用數組字面量直接初始化數組
	arr1 := [3]int{1, 2, 3}
	fmt.Println("數組字面量初始化:", arr1)


	// 使用索引逐個賦值來初始化數組
	var arr2 [3]int
	arr2[0] = 1
	arr2[1] = 2
	arr2[2] = 3
	fmt.Println("索引逐個賦值初始化:", arr2)
}

上面的代碼演示了使用數組字面量和索引逐個賦值兩種方式來初始化數組。

相關函數

數組的常用函數有len()和cap(),其中len()函數用于返回數組的長度,cap()函數用于返回數組的容量。數組還支持切片操作,可以使用切片語法來獲取數組的子集。

package main


import "fmt"


func main() {
	// 定義數組
	arr := [5]int{1, 2, 3, 4, 5}


	// 使用 len() 函數獲取數組長度
	fmt.Println("數組長度:", len(arr)) // 輸出:5


	// 使用 cap() 函數獲取數組容量
	fmt.Println("數組容量:", cap(arr)) // 輸出:5


	// 使用切片操作獲取數組的子集
	subArr := arr[1:3] // 獲取從索引1到索引2(不包含索引3)的子集
	fmt.Println("數組的子集:", subArr) // 輸出:[2 3]
}

上面的代碼演示了如何使用len()和cap()函數獲取數組的長度和容量,以及如何使用切片操作獲取數組的子集。

切片

定義

切片是一個擁有相同類型元素的可變長度的序列。在Go語言中,切片的定義形式為var sliceName []dataType,其中sliceName是切片的名稱,dataType是切片中元素的數據類型。

初始化

切片可以通過切片字面量或使用內置的make()函數來初始化。

使用切片字面量初始化切片

package main
import "fmt"
func main() {
	// 使用切片字面量初始化切片
	slice1 := []int{1, 2, 3, 4, 5}
	fmt.Println("切片字面量初始化
", slice1)
}

上面的代碼演示了使用切片字面量來初始化切片。切片字面量可以直接指定切片的內容。

使用 make() 函數初始化切片

package main
import "fmt"
func main() {
	// 使用 make() 函數初始化切片
	slice2 := make([]int, 3, 5) // 創建一個長度為3,容量為5的切片
	fmt.Println("使用 make() 函數初始化
", slice2)
}

上面的代碼演示了使用make()函數來初始化切片。使用make()函數時,需要指定切片的長度和容量。

使用

切片可以像數組一樣通過索引來訪問和修改元素,索引從0開始計數。例如,對于切片slice,可以通過slice[index]來訪問第index個元素,并且可以通過該語法來修改切片中的元素值。

除了與數組相似的索引操作外,切片還支持動態增加或刪除元素的操作。使用內置的append()函數可以向切片中添加新的元素,而使用切片的切片操作可以從切片中刪除元素。這種靈活的操作使得切片在處理動態數據集合時非常方便。

以下是使用切片進行訪問、修改以及動態增加元素的示例代碼

package main


import "fmt"


func main() {
	// 定義切片
	slice := []int{1, 2, 3, 4, 5}


	// 訪問切片元素
	fmt.Println("第三個元素:", slice[2]) // 輸出:3


	// 修改切片元素
	slice[2] = 10
	fmt.Println("修改后的切片:", slice) // 輸出:[1 2 10 4 5]


	// 動態增加元素
	slice = append(slice, 6)
	fmt.Println("增加元素后的切片:", slice) // 輸出:[1 2 10 4 5 6]
}

上面的代碼展示了使用切片進行訪問、修改以及動態增加元素的操作。

和數組的區別

  • 大?。簲到M的大小是固定的,而切片的大小是動態可變的。
  • 初始化:數組需要提前聲明大小并分配內存空間,而切片可以動態增長或縮小。
  • 傳遞方式:數組作為函數參數時會進行值拷貝,而切片作為函數參數時是引用傳遞,不會進行值拷貝。
  • 底層實現:數組是值類型,切片是引用類型,底層數據結構不同。

這些是數組和切片在定義、初始化、使用和特性上的主要區別。

責任編輯:武曉燕 來源: 海燕技術棧
相關推薦

2021-07-13 06:44:04

Go語言數組

2023-03-26 23:47:32

Go內存模型

2024-02-26 00:00:00

Go性能工具

2024-10-11 15:01:37

Go語言接口

2022-08-01 07:57:03

數組操作內存

2023-12-28 09:55:08

隊列數據結構存儲

2023-08-10 08:28:46

網絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發模式

2022-05-24 08:21:16

數據安全API

2023-09-10 21:42:31

2022-10-08 00:00:05

SQL機制結構

2023-05-31 08:42:02

管理產品技術項目

2022-04-07 11:43:24

UPnPDLNA協議

2023-04-26 07:30:00

promptUI非結構化

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2022-07-10 23:15:46

Go語言內存

2024-06-27 08:54:22

Go模塊團隊

2023-10-31 09:04:21

CPU調度Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99久久国产精| 久久久www成人免费无遮挡大片 | 欧美一区二区三 | 亚洲综合国产 | 国产在线观看 | 在线免费观看成年人视频 | 草草视频在线免费观看 | www.操com| 96国产精品久久久久aⅴ四区 | 日韩一区二区在线播放 | 中文字幕乱码一区二区三区 | 一级黄色片在线看 | 超碰国产在线 | 欧美一级免费 | 欧美freesex黑人又粗又大 | av高清毛片 | 91精品国产乱码久久久久久久 | 天天精品在线 | 精品一区久久 | 欧美精品福利视频 | 成人精品久久久 | 久久人 | 国产精品mv在线观看 | 女同久久另类99精品国产 | 中文字幕在线观看www | 成年网站在线观看 | 在线免费国产视频 | 日韩日韩日韩日韩日韩日韩日韩 | 天天射夜夜操 | 福利av在线 | 99精品视频在线观看免费播放 | 国产精品毛片一区二区三区 | 国产一区二区精品自拍 | 涩涩视频网站在线观看 | 欧美综合在线观看 | 亚洲欧美日韩网站 | 毛片站 | 国产精品一区二区欧美黑人喷潮水 | 国产精品a久久久久 | 91精品久久久久久久久中文字幕 | 国产在线观看一区 |