Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Melepasi Parameter Pembolehubah kepada Sprintf dalam Go dengan Sekeping Rentetan?
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!