Rumah > pembangunan bahagian belakang > Golang > Bagaimana Mengendalikan Berbilang Nilai Pulangan Apabila Melewati Fungsi Variadik dalam Go?

Bagaimana Mengendalikan Berbilang Nilai Pulangan Apabila Melewati Fungsi Variadik dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-12-18 21:56:14
asal
742 orang telah melayarinya

How to Handle Multiple Return Values When Passing to Variadic Functions in Go?

Nilai Pulangan Berbilang dengan Fungsi Variadik

Andaikan anda mempunyai fungsi Go yang mengembalikan nilai integer berbilang, seperti:

1

2

3

func temp() (int, int) {

    return 1, 1

}

Salin selepas log masuk

Secara intuitif, anda mungkin mahu menghantar terus hasil temp ke Printf dan mencetak kedua-duanya nilai menggunakan pemformatan rentetan:

1

fmt.Printf("first= %d and second = %d", temp())

Salin selepas log masuk

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:

1

2

a, b := temp()

fmt.Println("first=", a, "and second =", b)

Salin selepas log masuk

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{}:

1

2

3

func wrap(vs ...interface{}) []interface{} {

    return vs

}

Salin selepas log masuk

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:

1

2

3

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())...)

Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan