Rumah >pembangunan bahagian belakang >Golang >Bagaimana Mengendalikan Berbilang Nilai Pulangan Apabila Melewati Fungsi Variadik dalam Go?
Nilai Pulangan Berbilang dengan Fungsi Variadik
Andaikan anda mempunyai fungsi Go yang mengembalikan nilai integer berbilang, seperti:
func temp() (int, int) { return 1, 1 }
Secara intuitif, anda mungkin mahu menghantar terus hasil temp ke Printf dan mencetak kedua-duanya nilai menggunakan pemformatan rentetan:
fmt.Printf("first= %d and second = %d", temp())
Walau bagaimanapun, pendekatan ini tidak berfungsi kerana temp mengembalikan dua nilai, manakala Printf menjangkakan hanya satu.
Punca pengehadan ini terletak pada panggilan fungsi Go spesifikasi. Ia menyatakan bahawa jika fungsi mempunyai parameter ... akhir (seperti yang dilakukan oleh Printf), ia hanya boleh diberikan nilai pulangan yang selebihnya bagi fungsi lain. Ini menunjukkan bahawa fungsi lain mesti mempunyai sekurang-kurangnya satu nilai pulangan.
Menggunakan Interpolasi Rentetan
Daripada menggunakan Printf, anda boleh memanfaatkan interpolasi rentetan untuk mencapai matlamat anda:
a, b := temp() fmt.Println("first=", a, "and second =", b)
Pemulangan Balutan Nilai
Untuk menghantar berbilang nilai pulangan kepada fungsi variadik seperti Printf, anda boleh menggunakan fungsi utiliti yang dipanggil bungkus. Ia memerlukan bilangan nilai{} antara muka sembarangan dan mengembalikan sekeping nilai antara muka{}:
func wrap(vs ...interface{}) []interface{} { return vs }
Dengan utiliti ini, anda boleh menghantar nilai pulangan mana-mana fungsi yang mempunyai sekurang-kurangnya satu nilai pulangan kepada bungkus dan gunakan kepingan yang terhasil untuk memanggil Printf:
fmt.Printf("1: %v, 2: %v\n", wrap(oneInt())...) fmt.Printf("1: %v, 2: %v\n", wrap(twoInts())...) fmt.Printf("1: %v, 2: %v, 3: %v\n", wrap(threeStrings())...)
di mana oneInt, twoInts dan threeStrings ialah fungsi yang mengembalikan integer tunggal, tuple integer dan tuple rentetan, masing-masing.
Pendekatan ini memintas sekatan menghantar hanya satu nilai pulangan kepada fungsi variadic, membolehkan anda mencetak berbilang nilai pulangan fungsi anda seperti yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Berbilang Nilai Pulangan Apabila Melewati Fungsi Variadik dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!