Rumah > Artikel > pembangunan bahagian belakang > hirisan golang terbalik
Bahasa Slice in Go sangat biasa digunakan Ia adalah tatasusunan dinamik yang boleh ditambah, dipadam dan diubah suai dengan mudah. Tetapi kadangkala kita perlu membalikkan elemen hirisan, contohnya, membalikkan {1, 2, 3, 4, 5} kepada {5, 4, 3, 2, 1}. menghiris terbalik.
Penyongsangan hirisan sebenarnya untuk menyusun elemen hirisan dalam susunan terbalik, yang boleh dicapai menggunakan gelung. Kaedah khusus adalah untuk mengalihkan elemen pertama hirisan ke hujung, elemen kedua ke kedua ke terakhir, dan seterusnya. Perlu diingatkan bahawa jika panjang hirisan adalah nombor ganjil, elemen tengah tidak perlu ditukar.
Berikut ialah pelaksanaan kod menggunakan gelung:
func reverse(s []int) { for i := 0; i < len(s)/2; i++ { j := len(s) - i - 1 s[i], s[j] = s[j], s[i] } }
Fungsi songsang dalam kod menerima kepingan jenis int sebagai parameter dan membalikkan kepingan ini. Mula-mula gunakan gelung for untuk melintasi separuh pertama unsur hirisan dan tukarkannya dengan elemen terakhir yang sepadan. Perlu diingatkan bahawa indeks j diperolehi oleh len(s)-i-1, kerana indeks unsur terakhir hirisan ialah len(s)-1, dan indeks unsur terakhir sepadan dengan i- elemen ke adalah len(s) -i-1. Apabila panjang hirisan ialah nombor ganjil, elemen tengah tidak perlu ditukar.
Gunakan fungsi ini untuk membalikkan kepingan jenis int dengan sebarang panjang, contohnya:
func main() { s1 := []int{1,2,3,4,5} reverse(s1) fmt.Println(s1) s2 := []int{2,4,6,8,10,12} reverse(s2) fmt.Println(s2) }
Hasil output adalah seperti berikut:
[5 4 3 2 1] [12 10 8 6 4 2]
Selain menggunakan gelung, perpustakaan standard juga menyediakan fungsi untuk membalikkan kepingan - terbalik. Fungsi ini ditakrifkan dalam pakej isihan dan digunakan seperti berikut:
package main import ( "fmt" "sort" ) func main() { s1 := []int{1,2,3,4,5} sort.Slice(s1, func(i, j int) bool { return i > j }) fmt.Println(s1) s2 := []int{2,4,6,8,10,12} sort.Slice(s2, func(i, j int) bool { return i > j }) fmt.Println(s2) }
Fungsi sort.Slice dalam kod menerima dua parameter Parameter pertama ialah hirisan yang akan diterbalikkan, dan parameter kedua ialah fungsi A yang mentakrifkan peraturan untuk penyongsangan. Dalam fungsi ini, jika i lebih besar daripada j, ia kembali benar, menunjukkan bahawa i dan j perlu ditukar ke hadapan.
Perlu diambil perhatian bahawa fungsi sort.Slice hanya boleh beroperasi pada jenis yang mematuhi jenis.Antara muka antara muka, jadi jenis elemen hirisan perlu melaksanakan kaedah Len, Less dan Swap. Untuk kepingan jenis int, ia telah melaksanakan kaedah ini, jadi anda boleh terus menggunakan fungsi sort.Slice untuk melaksanakan operasi terbalik.
Gunakan fungsi isihan.Slice untuk membalikkan hirisan Kodnya adalah seperti berikut:
[5 4 3 2 1] [12 10 8 6 4 2]
Kedua-dua kaedah boleh membalikkan hirisan dengan mudah. Anda boleh memilih mengikut keadaan sebenar. Jika anda hanya perlu menterbalikkan sekali, adalah disyorkan untuk menggunakan kaedah gelung Jika anda perlu membalikkan beberapa kali, anda boleh mempertimbangkan untuk menggunakan fungsi isihan, kerana ia boleh menggunakan semula peraturan pengisihan dan meningkatkan kecekapan.
Atas ialah kandungan terperinci hirisan golang terbalik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!