Rumah > Artikel > pembangunan bahagian belakang > Corak reka bentuk biasa untuk fungsi golang
Corak reka bentuk fungsi bahasa Go digunakan untuk meningkatkan kebolehbacaan kod, kebolehselenggaraan dan kebolehgunaan semula, termasuk: Parameter input/output: membolehkan fungsi mengubah suai nilai pemanggil melalui parameter. Kembalikan berbilang nilai: Permudahkan kod dan elakkan menggunakan pembolehubah global. Berfungsi sebagai parameter: Cipta kod yang fleksibel dan boleh disesuaikan.
Artikel ini memperkenalkan corak reka bentuk fungsi biasa dalam bahasa Go, yang boleh meningkatkan kebolehbacaan, kebolehselenggaraan dan kebolehgunaan semula kod.
Parameter input/output membenarkan fungsi mengubah suai nilai pemanggil melalui parameter. Sebagai contoh, kita boleh menukar susunan dua nilai dalam fungsi:
func swap(a, b *int) { *a, *b = *b, *a }
Contoh praktikal: Fungsi tambahan untuk mengisih:
func sort(arr []int) { for i := 0; i < len(arr); i++ { for j := i + 1; j < len(arr); j++ { if arr[i] > arr[j] { swap(&arr[i], &arr[j]) } } } }
Bahasa Go membolehkan fungsi mengembalikan berbilang nilai. Ini memudahkan kod dan mengelakkan penggunaan pembolehubah global. Sebagai contoh, kita boleh menggunakan fungsi untuk mendapatkan nilai minimum dan maksimum daripada tatasusunan:
func minMax(arr []int) (int, int) { min := arr[0] max := arr[0] for _, v := range arr { if v < min { min = v } if v > max { max = v } } return min, max }
Contoh praktikal: Fungsi untuk mengira statistik:
func stats(arr []int) (float64, float64) { sum := 0 for _, v := range arr { sum += v } average := float64(sum) / float64(len(arr)) return average, float64(minMax(arr)[0] + minMax(arr)[1]) / 2 }
Fungsi Go boleh dihantar sebagai parameter fungsi lain. Ini membolehkan kami membuat kod yang fleksibel dan boleh disesuaikan. Sebagai contoh, kita boleh menggunakan fungsi sebagai fungsi pembanding:
type Person struct { Name string Age int } func compareByName(a, b Person) int { return strings.Compare(a.Name, b.Name) } func sortByName(people []Person) { sort.Slice(people, func(i, j int) bool { return compareByName(people[i], people[j]) < 0 }) }
Contoh praktikal: Fungsi isihan universal untuk menghiris struktur berdasarkan medan yang berbeza:
func sortBy(slice interface{}, less func(i, j interface{}) bool) { sort.Slice(slice, func(i, j int) bool { return less(slice[i], slice[j]) }) }
Atas ialah kandungan terperinci Corak reka bentuk biasa untuk fungsi golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!