Rumah > Artikel > pembangunan bahagian belakang > Perkongsian contoh aplikasi penutupan fungsi Golang
Golang ialah bahasa pengaturcaraan yang digemari oleh semakin ramai pembangun kerana kesederhanaan, kecekapan, keselamatan serentak dan ciri lain. Fungsi Golang ialah jenis nilai, yang sangat fleksibel dan boleh diperluaskan, serta boleh melaksanakan fungsi penutupan dengan mudah.
Penutupan ialah salah satu teknik yang biasa digunakan dalam fungsi Ia membenarkan fungsi untuk mengakses pembolehubah yang ditakrifkan dalam skop luar dan mengembalikan rujukan kepada pembolehubah ini. Seterusnya, artikel ini akan berkongsi contoh yang berbeza untuk menerangkan aplikasi penutupan fungsi Golang.
1. Kalkulator
Kalkulator ialah aplikasi penutupan biasa Ia menggunakan penutupan untuk merealisasikan kenaikan kendiri atau pengurangan kendiri, membolehkan pengaturcara menguruskan status kaunter dengan mudah. .
Berikut ialah contoh:
func Calculator(number int) func() int { return func() int { number += 1 return number } } // 使用 cal := Calculator(0) fmt.Println(cal()) // 1 fmt.Println(cal()) // 2 fmt.Println(cal()) // 3
Dalam contoh ini, fungsi Kalkulator mengembalikan penutupan, yang secara dalaman mengakses nombor pembolehubah yang ditakrifkan dalam fungsi Kalkulator dan melaksanakan Fungsi kenaikan automatik.
2. Lelaran gelung
Di Golang, kerana tiada gelung sementara, gelung for biasanya digunakan untuk melaksanakan lelaran. Walau bagaimanapun, dalam beberapa kes adalah lebih mudah untuk melelaran melalui gelung menggunakan penutupan.
Berikut ialah contoh:
func Iteration() { items := []string{"apple", "banana", "cherry"} for _, item := range items { func() { fmt.Printf("%s ", item) }() } } // 使用 Iteration()
Dalam contoh ini, fungsi Lelaran ialah fungsi lelaran gelung yang menggunakan penutupan untuk mencetak setiap elemen dalam tatasusunan.
3. Panggilan tertunda
Panggilan tertunda ialah fungsi yang biasa digunakan di Golang, yang membolehkan atur cara melakukan beberapa kerja penamat sebelum fungsi keluar. Dalam penutupan, anda boleh menggunakan panggilan tertunda untuk mencapai beberapa operasi yang elegan.
Berikut ialah contoh:
func DeferCall() { fmt.Println("start") func() { defer func() { fmt.Println("end") }() }() } // 使用 DeferCall()
Dalam contoh ini, fungsi DeferCall ditakrifkan, penutupan ditakrifkan dalam fungsi dan fungsi tanpa nama dipanggil menggunakan penangguhan di dalam penutupan. Pernyataan penangguhan di sini akan dilaksanakan apabila fungsi keluar untuk melaksanakan beberapa fungsi tertentu, seperti pelepasan sumber, pengelogan, dsb.
4. Kawalan Concurrency
Di Golang, sangat mudah untuk menggunakan goroutine untuk mencapai concurrency. Walau bagaimanapun, dalam beberapa kes, beberapa kawalan konkurensi khas perlu dilaksanakan, yang boleh diselesaikan menggunakan penutupan.
Berikut ialah contoh:
func ConcurrencyControl() { var wg sync.WaitGroup ch := make(chan bool, 2) for i := 1; i <= 2; i++ { wg.Add(1) go func(id int) { defer func() { wg.Done() }() ch <- true defer func() { <-ch }() time.Sleep(time.Second * time.Duration(2)) fmt.Printf("id=%d ", id) }(i) } wg.Wait() } // 使用 ConcurrencyControl()
Dalam contoh ini, fungsi ConcurrencyControl ditakrifkan yang menggunakan WaitGroup dan chan untuk mengawal tertib pelaksanaan dua urutan serentak. Antaranya, tangguh panggilan dalam penutupan digunakan untuk melaksanakan beberapa operasi tertentu.
Ringkasan
Contoh di atas menunjukkan empat aspek aplikasi penutupan fungsi Golang, tetapi bukan semuanya. Dalam pembangunan sebenar, pengaturcara boleh memilih kaedah aplikasi penutupan yang berbeza untuk memenuhi keperluan yang berbeza.
Secara umumnya, penutupan fungsi Golang adalah ciri yang sangat berguna dan berkuasa, yang bukan sahaja meningkatkan kecekapan dan kebolehskalaan program, tetapi juga membolehkan pengaturcara menulis kod dengan lebih gembira. Adalah disyorkan bahawa pengaturcara menguasai kemahiran ini dan mengaplikasikannya pada pembangunan sebenar.
Atas ialah kandungan terperinci Perkongsian contoh aplikasi penutupan fungsi Golang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!