Melalukan Parameter Pembolehubah ke Sprintf dalam Go
Apabila bekerja dengan sejumlah besar parameter, menghantarnya secara manual kepada Sprintf boleh membosankan. Nasib baik, terdapat cara untuk memudahkan proses ini.
Isu:
Percubaan untuk menghantar sekeping rentetan ([]rentetan) terus ke Sprintf mengakibatkan ralat :
cannot use v (type []string) as type []interface {} in argument to fmt.Printf
Penyelesaian:
Untuk menyelesaikan ralat ini, isytiharkan hirisan sebagai jenis []antara muka{} dan bukannya []rentetan. Sprintf menjangkakan tatasusunan parameter antara muka{}, seperti yang dilihat dalam tandatangannya:
func Printf(format string, a ...interface{}) (n int, err error)
Contoh:
s := []interface{}{"a", "b", "c", "d"} fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3]) v := s[1:] fmt.Printf("%5s %4s %3s\n", v...)
Output (Go Playground) :
b c d b c d
Nota:
[]antara muka{} dan []rentetan tidak boleh ditukar ganti. Jika anda mempunyai []rentetan sedia ada, anda boleh menukarnya secara manual kepada []antara muka{} seperti berikut:
ss := []string{"a", "b", "c"} is := make([]interface{}, len(ss)) for i, v := range ss { is[i] = v }
Atas ialah kandungan terperinci Bagaimana untuk Melepasi Parameter Pembolehubah kepada Sprintf dalam Go dengan Sekeping Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!