Mari kita bincangkan tentang cara menggunakan pakej isihan Golang

PHPz
Lepaskan: 2023-04-03 10:16:05
asal
655 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
Tutorial Popular
Lagi>
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!