Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melepasi Parameter Tatasusunan atau Potong ke Sprintf dalam Go?

Bagaimana untuk Melepasi Parameter Tatasusunan atau Potong ke Sprintf dalam Go?

Patricia Arquette
Lepaskan: 2024-10-27 20:30:02
asal
1069 orang telah melayarinya

How to Pass Array or Slice Parameters to Sprintf in Go?

Melalui Parameter Pembolehubah kepada Sprintf dalam Go

Fungsi Printf dalam Go membenarkan pemformatan dan mencetak output menggunakan rentetan format yang ditentukan, diikuti dengan bilangan parameter yang berubah-ubah. Walau bagaimanapun, jika anda ingin menghantar tatasusunan atau kepingan nilai sebagai parameter, anda mungkin menghadapi ralat jenis.

Pertimbangkan contoh berikut:

<code class="go">s := []string{"a", "b", "c", "d"}  // Result from regexp.FindStringSubmatch()
fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3])</code>
Salin selepas log masuk

Menjalankan kod ini menghasilkan ralat:

cannot use v (type []string) as type []interface {} in argument to fmt.Printf
Salin selepas log masuk

Untuk menyelesaikan masalah ini, anda mesti mengisytiharkan kepingan anda sebagai jenis []antara muka{}. Ini kerana Printf menjangkakan parameter jenis itu.

s := []interface{}{"a", "b", "c", "d"}
fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3])
Salin selepas log masuk

Pilihan lain ialah menukar []rentetan kepada []antara muka{} anda secara manual sebelum menghantarnya ke Printf.

<code class="go">ss := []string{"a", "b", "c"}
is := make([]interface{}, len(ss))
for i, v := range ss {
    is[i] = v
}</code>
Salin selepas log masuk

Menggunakan pendekatan ini membolehkan anda menghantar is slice sebagai parameter pembolehubah kepada Printf.

Atas ialah kandungan terperinci Bagaimana untuk Melepasi Parameter Tatasusunan atau Potong ke Sprintf 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