Go 語(yǔ)言中的數(shù)組
- 定義數(shù)組的格式:
var <arrayName> [n]<type>
, 其中 n >= 0疯攒;
package basic
import "fmt"
func DeclaratArray(){
// 定義指定長(zhǎng)度的數(shù)組
var arr1 [5]int
fmt.Println(arr1) // [0 0 0 0 0]
// 不設(shè)置數(shù)組長(zhǎng)度
arr2 := [...]int{}
fmt.Println(arr2) // []
// 定義指定長(zhǎng)度的數(shù)組,并賦值
arr3 := [2]int{ 1, 5 }
fmt.Println(arr3) // [1 5]
}
- 通過(guò)
new
關(guān)鍵字聲明數(shù)組列荔,返回一個(gè)指向該數(shù)組的指針敬尺;
package basic
import "fmt"
func DeclaratArrayByNew(){
// 通過(guò) new 聲明數(shù)組 枚尼,返回一個(gè)指向該數(shù)組的指針
arr1 := new([5]int)
fmt.Println(arr1) // &[0 0 0 0 0]
}
指向數(shù)組的指針 與 指針數(shù)組的區(qū)別是:
- 指向數(shù)組的指針:是指一個(gè)指針指向某個(gè)數(shù)組;
- 指針數(shù)組:數(shù)組包含的類型是指針砂吞;
數(shù)組長(zhǎng)度也是數(shù)組類型的一部分署恍,因此具有不同長(zhǎng)度的數(shù)組為不同類型。
數(shù)組是值類型
??Go 語(yǔ)言中的數(shù)組是值類型的蜻直,也就意味著兩個(gè)相同類型的數(shù)組可以使用 ==
或 !=
運(yùn)算符判斷兩個(gè)數(shù)組是否相等盯质,但是不能使用 <
或 >
運(yùn)算符;
package basic
import "fmt"
func JudgeArray(){
arr1 := [5]int{1, 3, 5}
arr2 := [5]int{2, 4, 6}
fmt.Println(arr1 == arr2) // false
fmt.Println(arr1 != arr2) // true
}
??由于數(shù)組是值類型概而,因此向一個(gè)函數(shù)傳遞數(shù)值時(shí)呼巷,需要傳遞一個(gè)指向該數(shù)組的指針,才能在函數(shù)內(nèi)更改該數(shù)組的值赎瑰;
package main
import "fmt"
// 更改數(shù)組內(nèi)的值
func UpdateArray(array *[5]int){
array[0] = 100
}
func main(){
array := [5]int{1, 3, 4, 5}
UpdateArray(&array)
fmt.Println(array) // [100 3 4 5 0]
}
實(shí)際上在 Go 語(yǔ)言中一般不直接使用數(shù)組王悍,而是使用切片。
多維數(shù)組
package basic
import "fmt"
func MultidimensionalArray() {
array := [2][3]int{
{1, 3, 5},
{2, 4, 6},
}
fmt.Println(array) // [[1 3 5] [2 4 6]]
}