Mari kita bincangkan tentang cara menggunakan pakej isihan Golang

PHPz
Lepaskan: 2023-04-03 10:16:05
asal
619 orang telah melayarinya

Golang ialah bahasa pengaturcaraan yang cekap, ringkas dan boleh dipercayai yang digunakan secara meluas dalam pembangunan bahagian pelayan dan pengaturcaraan sistem. Di Golang, pakej isihan menyediakan fungsi pengisihan yang kaya yang boleh memenuhi pelbagai keperluan pengisihan. Artikel ini akan memperkenalkan cara menggunakan pakej isihan Golang.

  1. Ikhtisar pakej isihan

Pakej isihan menyediakan fungsi untuk mengisih pada jenis jujukan yang berbeza, seperti []int, []float64, []rentetan, dsb. . Ia juga menyediakan isihan antara muka umum.Antaramuka, yang boleh digunakan untuk menentukan jenis isihan tersuai. Algoritma pengisihan yang disediakan oleh pakej isihan ialah beberapa isihan cepat dan isihan timbunan yang dioptimumkan. Dalam pakej sort, terdapat tiga fungsi utama: Sort, Reverse dan IsSorted.

  1. Fungsi Isih

Fungsi Isih mengisih urutan yang melaksanakan isihan.Antaramuka dalam tertib menaik. Antara muka sort.Interface mentakrifkan tiga kaedah: Len, Swap dan Less. Antaranya, kaedah Len mengembalikan panjang jujukan, kaedah Swap menukar kedudukan dua elemen, dan kaedah Less mengembalikan sama ada elemen pada kedudukan i lebih kecil daripada elemen pada kedudukan j. Contohnya adalah seperti berikut:

package main import ( "fmt" "sort" ) type persons []struct { name string age int } func (ps persons) Len() int { return len(ps) } func (ps persons) Swap(i, j int) { ps[i], ps[j] = ps[j], ps[i] } func (ps persons) Less(i, j int) bool { return ps[i].age < ps[j].age } func main() { ps := persons{{"Tom", 25}, {"Jerry", 20}, {"Alice", 30}} sort.Sort(ps) fmt.Println(ps) }
Salin selepas log masuk

Hasil output ialah:

[{Jerry 20} {Tom 25} {Alice 30}]
Salin selepas log masuk
  1. Fungsi songsang

Fungsi Songsang mengembalikan urutan yang melaksanakan urutan. Antara muka antara muka urutan terbalik. Contohnya adalah seperti berikut:

package main import ( "fmt" "sort" ) func main() { ns := []int{3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5} sort.Sort(sort.Reverse(sort.IntSlice(ns))) fmt.Println(ns) }
Salin selepas log masuk

Hasil output ialah:

[9 6 5 5 5 4 3 3 2 1 1]
Salin selepas log masuk
  1. Fungsi IsSorted

Fungsi IsSorted menentukan sama ada jujukan yang melaksanakan sort.Antaramuka sudah disusun mengikut peraturan kaedah Kurang. Contohnya adalah seperti berikut:

package main import ( "fmt" "sort" ) func main() { ns := []int{1, 2, 3, 3, 4, 5} fmt.Println(sort.IsSorted(sort.IntSlice(ns))) ns = []int{1, 2, 3, 4, 3, 5} fmt.Println(sort.IsSorted(sort.IntSlice(ns))) }
Salin selepas log masuk

Hasil output ialah:

true false
Salin selepas log masuk
  1. Isih jenis tersuai

Kita juga boleh mengisih berdasarkan jenis tersuai tertentu Properties diisih. Contohnya adalah seperti berikut:

package main import ( "fmt" "sort" ) type Person struct { Name string Age int } type Persons []*Person func (ps Persons) Len() int { return len(ps) } func (ps Persons) Swap(i, j int) { ps[i], ps[j] = ps[j], ps[i] } func (ps Persons) Less(i, j int) bool { return ps[i].Age < ps[j].Age } func main() { ps := Persons{{"Tom", 25}, {"Jerry", 20}, {"Alice", 30}} sort.Sort(ps) for _, p := range ps { fmt.Printf("%s %d\n", p.Name, p.Age) } }
Salin selepas log masuk

Hasil output ialah:

Jerry 20 Tom 25 Alice 30
Salin selepas log masuk

Ringkasan:

Pakej isihan Golang menyediakan fungsi pengisihan yang berkuasa yang boleh mengisih pelbagai jenis daripada urutan. Kami juga boleh menggunakan sort.Antara muka antara muka untuk menentukan jenis tersuai pengisihan. Algoritma pengisihan yang disediakan oleh pakej isihan dioptimumkan isihan cepat dan isihan timbunan, jadi ia lebih cekap. Keseluruhan pakej isihan mudah digunakan dan mempunyai logik yang jelas Ia adalah pakej yang sangat diperlukan di Golang.

Atas ialah kandungan terperinci Mari kita bincangkan tentang cara menggunakan pakej isihan Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.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
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!