Rumah > pembangunan bahagian belakang > Golang > Bolehkah `fmt.Println` Go Mengendalikan Berbilang Nilai Pulangan daripada Fungsi Secara Terus?

Bolehkah `fmt.Println` Go Mengendalikan Berbilang Nilai Pulangan daripada Fungsi Secara Terus?

Susan Sarandon
Lepaskan: 2024-12-15 07:57:14
asal
287 orang telah melayarinya

Can Go's `fmt.Println` Handle Multiple Return Values from a Function Directly?

Melalui Berbilang Nilai Pulangan kepada Fungsi Variadik dalam Go

Soalan:

Bolehkah berfungsi mengembalikan berbilang nilai integer dihantar terus ke fmt.Println() untuk output rentetan yang diformatkan, serupa dengan Python?

func temp() (int, int) { return 1, 1 }
fmt.Println("first= %d and second = %d", temp()) // Not supported
Salin selepas log masuk

Jawapan:

Tidak, ini tidak disokong secara langsung secara lalai dalam Go. Menurut spesifikasi bahasa, "Panggilan" mengharapkan panggilan fungsi sebagai hujah tunggal untuk parameter variadik seperti ...antara muka{} dan fungsi mesti mempunyai sekurang-kurangnya satu nilai pulangan.

fmt.Printf(), walau bagaimanapun, membenarkan rentetan format bersama parameter variadik, menjadikannya lebih sesuai untuk tugas ini. Walau bagaimanapun, memandangkan temp() mengembalikan tupel, ia tidak boleh dihantar terus sebagai argumen ...antara muka{}.

Penyelesaian:

Untuk menghantar berbilang nilai pulangan ke dalam fungsi variadic, fungsi pembalut utiliti boleh digunakan untuk menukar tuple menjadi kepingan []antara muka{}, yang kemudiannya boleh dihantar sebagai hujah variadic. Di bawah ialah contoh pelaksanaan:

func wrap(vs ...interface{}) []interface{} {
    return vs
}
Salin selepas log masuk

Menggunakan fungsi pembalut ini, fungsi temp() kini boleh dihantar ke fmt.Printf():

func main() {
    fmt.Printf("first= %v and second = %v", wrap(temp()...)...)
}
Salin selepas log masuk

Ini akan mencetak dengan betul nilai temp().

Atas ialah kandungan terperinci Bolehkah `fmt.Println` Go Mengendalikan Berbilang Nilai Pulangan daripada Fungsi Secara Terus?. 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