Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Analisis ringkas tatasusunan di Golang

Analisis ringkas tatasusunan di Golang

青灯夜游
青灯夜游ke hadapan
2022-11-29 21:00:455482semak imbas

Artikel ini akan mengajar anda tentang Golang dan bercakap tentang tatasusunan dalam asas bahasa Go. Saya harap ia akan membantu anda.

Analisis ringkas tatasusunan di Golang

[Cadangan tutorial pengaturcaraan: Pengajaran pengaturcaraan]

1 🎜>Susun atur ialah himpunan elemen daripada jenis data yang sama. Dalam bahasa Go, tatasusunan ditentukan dari masa pengisytiharan, dan ahli tatasusunan boleh diubah suai semasa digunakan, tetapi saiz tatasusunan tidak boleh diubah. Sintaks asas:

Panjang kumpulan mestilah malar dan panjang adalah sebahagian daripada jenis tatasusunan. Setelah ditentukan, panjangnya tidak boleh diubah. Tatasusunan

// 定义一个长度为3元素类型为int的数组a
var a [3]int

boleh diakses melalui subskrip. Subskrip bermula dari

Subskrip elemen terakhir ialah:
var a [3]int
var b [4]int
a = b //不可以这样做,因为此时a和b是不同的类型
(subskrip berada di luar julat undang-undang ), maka Jika akses luar sempadan dicetuskan, panik akan berlaku.

0len-12. Permulaan tatasusunan

① Apabila memulakan tatasusunan, anda boleh menggunakan senarai permulaan untuk menetapkan nilai elemen tatasusunan.

② Ikuti kaedah di atas untuk memastikan bahawa nilai awal yang diberikan adalah konsisten dengan panjang tatasusunan Secara umumnya, kita boleh membiarkan pengkompil membuat kesimpulan panjang tatasusunan berdasarkan bilangan nilai awal .

func main() {
	var testArray [3]int                        //数组会初始化为int类型的零值
	var numArray = [3]int{1, 2}                 //使用指定的初始值完成初始化
	var cityArray = [3]string{"北京", "上海", "深圳"} //使用指定的初始值完成初始化
	fmt.Println(testArray)                      //[0 0 0]
	fmt.Println(numArray)                       //[1 2 0]
	fmt.Println(cityArray)                      //[北京 上海 深圳]
}

Kita juga boleh memulakan tatasusunan dengan menyatakan nilai indeks

func main() {
	var testArray [3]int
	var numArray = [...]int{1, 2}
	var cityArray = [...]string{"北京", "上海", "深圳"}
	fmt.Println(testArray)                          //[0 0 0]
	fmt.Println(numArray)                           //[1 2]
	fmt.Printf("type of numArray:%T\n", numArray)   //type of numArray:[2]int
	fmt.Println(cityArray)                          //[北京 上海 深圳]
	fmt.Printf("type of cityArray:%T\n", cityArray) //type of cityArray:[3]string
}

3 Tatasusunan traversal
func main() {
	a := [...]int{1: 1, 3: 5}
	fmt.Println(a)                  // [0 1 0 5]
	fmt.Printf("type of a:%T\n", a) //type of a:[4]int
}

Susun suai a Ada dua kaedah berikut:

4. Tatasusunan berbilang dimensi
func main() {
	var a = [...]string{"北京", "上海", "深圳"}
	// 方法1:for循环遍历
	for i := 0; i < len(a); i++ {
		fmt.Println(a[i])
	}

	// 方法2:for range遍历
	for index, value := range a {
		fmt.Println(index, value)
	}
}

Bahasa Go menyokong tatasusunan berbilang dimensi contoh (dalam tatasusunan dan tatasusunan bersarang).

Takrif tatasusunan dua dimensi

Perjalanan tatasusunan dua dimensi
func main() {
	a := [3][2]string{
		{"北京", "上海"},
		{"广州", "深圳"},
		{"成都", "重庆"},
	}
	fmt.Println(a) //[[北京 上海] [广州 深圳] [成都 重庆]]
	fmt.Println(a[2][1]) //支持索引取值:重庆
}

Nota :
func main() {
	a := [3][2]string{
		{"北京", "上海"},
		{"广州", "深圳"},
		{"成都", "重庆"},
	}
	for _, v1 := range a {
		for _, v2 := range v1 {
			fmt.Printf("%s\t", v2)
		}
		fmt.Println()
	}
}


输出:

北京	上海	
广州	深圳	
成都	重庆
Tatasusunan berbilang dimensi

Hanya tahap pertama boleh menggunakan untuk membenarkan pengkompil menyimpulkan panjang tatasusunan ...

5 jenis nilai
//支持的写法
a := [...][2]string{
	{"北京", "上海"},
	{"广州", "深圳"},
	{"成都", "重庆"},
}
//不支持多维数组的内层使用...
b := [3][...]string{
	{"北京", "上海"},
	{"广州", "深圳"},
	{"成都", "重庆"},

Tatasusunan ialah jenis nilai, dan penugasan serta hantaran parameter akan menyalin keseluruhan tatasusunan. Oleh itu, menukar nilai salinan tidak akan mengubah nilai dirinya sendiri.

petua:

func modifyArray(x [3]int) {
	x[0] = 100
}

func modifyArray2(x [3][2]int) {
	x[2][0] = 100
}
func main() {
	a := [3]int{10, 20, 30}
	modifyArray(a) //在modify中修改的是a的副本x
	fmt.Println(a) //[10 20 30]
	b := [3][2]int{
		{1, 1},
		{1, 1},
		{1, 1},
	}
	modifyArray2(b) //在modify中修改的是b的副本x
	fmt.Println(b)  //[[1 1] [1 1] [1 1]]
}

Array menyokong pengendali "==", "!=" kerana memori sentiasa dimulakan.
  • mewakili tatasusunan penuding, dan
  • mewakili penuding tatasusunan.

    [n]*T*[n]T

  • Tamat:

Ingatkan saya sekali lagi, jika anda perlu sertai , anda boleh menambah saya di WeChat

, jika anda perlu menyertai jurutera hadapan untuk berkomunikasi Kumpulan

, perlu memasuki kumpulan komunikasi go backend 技术交流群fangdongdong_25备注“前端” [Cadangan berkaitan: 备注“go后端”Tutorial video Go

]

Atas ialah kandungan terperinci Analisis ringkas tatasusunan di Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam