自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我們一起聊聊Go語(yǔ)言中的數(shù)組和切片

開(kāi)發(fā) 前端
多維數(shù)組是數(shù)組的數(shù)組,也就是說(shuō)數(shù)組中的元素又是數(shù)組。多維數(shù)組的定義形式為var arrayName [size1][size2]...[sizeN]dataType?,其中size1、size2?等是各個(gè)維度的大小,dataType是數(shù)組中元素的數(shù)據(jù)類(lèi)型。

數(shù)組

定義

一維數(shù)組

一維數(shù)組是具有相同數(shù)據(jù)類(lèi)型的固定大小的數(shù)據(jù)序列。在Go語(yǔ)言中,一維數(shù)組的定義形式為var arrayName [size]dataType,其中arrayName是數(shù)組的名稱(chēng),size是數(shù)組的大小,dataType是數(shù)組中元素的數(shù)據(jù)類(lèi)型。

多維數(shù)組

多維數(shù)組是數(shù)組的數(shù)組,也就是說(shuō)數(shù)組中的元素又是數(shù)組。多維數(shù)組的定義形式為var arrayName [size1][size2]...[sizeN]dataType,其中size1、size2等是各個(gè)維度的大小,dataType是數(shù)組中元素的數(shù)據(jù)類(lèi)型。

使用

數(shù)組可以通過(guò)索引來(lái)訪(fǎng)問(wèn)和修改元素,索引從0開(kāi)始計(jì)數(shù)。例如,對(duì)于一維數(shù)組arr,可以通過(guò)arr[index]來(lái)訪(fǎng)問(wèn)第index個(gè)元素;對(duì)于多維數(shù)組arr,可以通過(guò)arr[index1][index2]...[indexN]來(lái)訪(fǎng)問(wèn)多維數(shù)組中的元素。

package main


import "fmt"


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


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


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


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

上面的代碼演示了如何訪(fǎng)問(wèn)和修改一維數(shù)組和多維數(shù)組中的元素。

初始化

Go語(yǔ)言中數(shù)組的初始化有兩種方式:一種是使用數(shù)組字面量直接初始化數(shù)組,另一種是通過(guò)索引逐個(gè)賦值來(lái)初始化數(shù)組。

package main


import "fmt"


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


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

上面的代碼演示了使用數(shù)組字面量和索引逐個(gè)賦值兩種方式來(lái)初始化數(shù)組。

相關(guān)函數(shù)

數(shù)組的常用函數(shù)有l(wèi)en()和cap(),其中l(wèi)en()函數(shù)用于返回?cái)?shù)組的長(zhǎng)度,cap()函數(shù)用于返回?cái)?shù)組的容量。數(shù)組還支持切片操作,可以使用切片語(yǔ)法來(lái)獲取數(shù)組的子集。

package main


import "fmt"


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


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


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


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

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

切片

定義

切片是一個(gè)擁有相同類(lèi)型元素的可變長(zhǎng)度的序列。在Go語(yǔ)言中,切片的定義形式為var sliceName []dataType,其中sliceName是切片的名稱(chēng),dataType是切片中元素的數(shù)據(jù)類(lèi)型。

初始化

切片可以通過(guò)切片字面量或使用內(nèi)置的make()函數(shù)來(lái)初始化。

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

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

上面的代碼演示了使用切片字面量來(lái)初始化切片。切片字面量可以直接指定切片的內(nèi)容。

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

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

上面的代碼演示了使用make()函數(shù)來(lái)初始化切片。使用make()函數(shù)時(shí),需要指定切片的長(zhǎng)度和容量。

使用

切片可以像數(shù)組一樣通過(guò)索引來(lái)訪(fǎng)問(wèn)和修改元素,索引從0開(kāi)始計(jì)數(shù)。例如,對(duì)于切片slice,可以通過(guò)slice[index]來(lái)訪(fǎng)問(wèn)第index個(gè)元素,并且可以通過(guò)該語(yǔ)法來(lái)修改切片中的元素值。

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

以下是使用切片進(jìn)行訪(fǎng)問(wèn)、修改以及動(dòng)態(tài)增加元素的示例代碼

package main


import "fmt"


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


	// 訪(fǎng)問(wèn)切片元素
	fmt.Println("第三個(gè)元素:", slice[2]) // 輸出:3


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


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

上面的代碼展示了使用切片進(jìn)行訪(fǎng)問(wèn)、修改以及動(dòng)態(tài)增加元素的操作。

和數(shù)組的區(qū)別

  • 大?。簲?shù)組的大小是固定的,而切片的大小是動(dòng)態(tài)可變的。
  • 初始化:數(shù)組需要提前聲明大小并分配內(nèi)存空間,而切片可以動(dòng)態(tài)增長(zhǎng)或縮小。
  • 傳遞方式:數(shù)組作為函數(shù)參數(shù)時(shí)會(huì)進(jìn)行值拷貝,而切片作為函數(shù)參數(shù)時(shí)是引用傳遞,不會(huì)進(jìn)行值拷貝。
  • 底層實(shí)現(xiàn):數(shù)組是值類(lèi)型,切片是引用類(lèi)型,底層數(shù)據(jù)結(jié)構(gòu)不同。

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

責(zé)任編輯:武曉燕 來(lái)源: 海燕技術(shù)棧
相關(guān)推薦

2021-07-13 06:44:04

Go語(yǔ)言數(shù)組

2024-10-11 15:01:37

Go語(yǔ)言接口

2024-02-26 00:00:00

Go性能工具

2023-03-26 23:47:32

Go內(nèi)存模型

2022-08-01 07:57:03

數(shù)組操作內(nèi)存

2023-12-28 09:55:08

隊(duì)列數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)

2022-07-10 23:15:46

Go語(yǔ)言內(nèi)存

2023-05-31 08:42:02

管理產(chǎn)品技術(shù)項(xiàng)目

2022-04-07 11:43:24

UPnPDLNA協(xié)議

2024-06-27 08:54:22

Go模塊團(tuán)隊(duì)

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開(kāi)發(fā)模式

2024-01-15 08:41:25

SwiftTypeScrip語(yǔ)法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)