Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pengenalan kepada ciri lanjutan fungsi Golang

Pengenalan kepada ciri lanjutan fungsi Golang

PHPz
PHPzasal
2024-04-15 14:45:02722semak imbas

Ciri fungsi Golang lanjutan: Penutupan: Tangkap pembolehubah dalam skop sekeliling untuk menghantar data. Fungsi Variadic: menerima bilangan parameter yang berubah-ubah. Fungsi tanpa nama: tidak dinamakan, panggil balik sekali atau penutupan. Fungsi tertib lebih tinggi: menerima atau mengembalikan parameter fungsi. Generik: Fungsi universal, terpakai pada jenis data yang berbeza (diperkenalkan dalam Go 1.18).

Pengenalan kepada ciri lanjutan fungsi Golang

Ciri Lanjutan Fungsi Golang

Fungsi ialah cara yang berkuasa untuk mengatur kod anda. Fungsi Go menyediakan satu set ciri lanjutan yang membantu anda menulis kod yang lebih modular dan boleh diselenggara. Artikel ini akan memperkenalkan beberapa ciri lanjutan yang berguna dan menunjukkan aplikasinya melalui kes praktikal.

Penutupan

Penutupan ialah fungsi yang menangkap pembolehubah skop fungsi sekeliling. Ia membolehkan anda mengakses pembolehubah ini selepas fungsi tersebut dilaksanakan. Ini berguna apabila anda perlu menghantar data ke fungsi bersarang atau panggil balik.

func outer() func() int {
    count := 0
    return func() int {
        count++
        return count
    }
}

func main() {
    f := outer()
    fmt.Println(f()) // 1
    fmt.Println(f()) // 2
}

Fungsi Variadik

Fungsi variadik membolehkan anda memasukkan bilangan parameter yang berubah-ubah. Ini berguna apabila anda perlu memproses data daripada sumber yang berbeza.

func sum(numbers ...int) int {
    total := 0
    for _, num := range numbers {
        total += num
    }
    return total
}

func main() {
    fmt.Println(sum(1, 2, 3, 4, 5)) // 15
}

Fungsi tanpa nama

Fungsi tanpa nama ialah fungsi tanpa nama yang tidak mempunyai penerima yang jelas. Ia sering digunakan untuk mentakrifkan panggilan balik atau penutupan sekali dengan mudah.

func main() {
    // 定义一个匿名函数并传递给 sort.Slice
    sort.Slice([]int{1, 3, 2}, func(i, j int) bool {
        return []int{1, 3, 2}[i] < []int{1, 3, 2}[j]
    })
}

Fungsi Susunan Tinggi

Fungsi tertib lebih tinggi ialah fungsi yang mengambil fungsi sebagai parameter atau mengembalikan fungsi. Ini membolehkan anda membina kod yang lebih fleksibel dan boleh disesuaikan pada masa jalan.

func add10(x int) int {
    return x + 10
}

func mapValues(nums []int, f func(int) int) []int {
    result := make([]int, len(nums))
    for i, num := range nums {
        result[i] = f(num)
    }
    return result
}

func main() {
    nums := []int{1, 2, 3, 4, 5}
    fmt.Println(mapValues(nums, add10)) // [11 12 13 14 15]
}

Generics

Generik membolehkan anda menulis fungsi yang berfungsi secara meluas merentas jenis data yang berbeza. Generik telah diperkenalkan dalam Go 1.18.

func max[T comparable](a, b T) T {
    if a > b {
        return a
    }
    return b
}

func main() {
    fmt.Println(max(1, 2)) // 2
    fmt.Println(max("hello", "world")) // world
}

Ini adalah beberapa ciri lanjutan fungsi Golang. Ciri ini boleh meningkatkan kecekapan pengaturcaraan dan kualiti kod anda dengan menyediakan sokongan untuk penutupan, fungsi variadik, fungsi tanpa nama, fungsi tertib tinggi dan generik.

Atas ialah kandungan terperinci Pengenalan kepada ciri lanjutan fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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