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

Analisis ringkas tatasusunan di Golang

青灯夜游
Lepaskan: 2022-12-06 19:08:17
ke hadapan
5535 orang telah melayarinya

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
Salin selepas log masuk

boleh diakses melalui subskrip. Subskrip bermula dari

Subskrip elemen terakhir ialah:
var a [3]int
var b [4]int
a = b //不可以这样做,因为此时a和b是不同的类型
Salin selepas log masuk
(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)                      //[北京 上海 深圳]
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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
}
Salin selepas log masuk

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)
	}
}
Salin selepas log masuk

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]) //支持索引取值:重庆
}
Salin selepas log masuk

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


输出:

北京	上海	
广州	深圳	
成都	重庆
Salin selepas log masuk
Tatasusunan berbilang dimensi

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

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

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]]
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan