2 回答

TA貢獻1963條經(jīng)驗 獲得超6個贊
這只是一個小錯誤。您將fmt.Printfwitha作為單個參數(shù)調(diào)用,而事實并非如此。您需要將其作為可變參數(shù)傳遞。
package main
import (
? ? "fmt"
)
func P(format string, a ...interface{}) {
? ? fmt.Printf(format, a)
}
func P2(format string, a ...interface{}) {
? ? fmt.Printf(format, a...)
}
func main() {
? ? P("%s,%s,%d", "", "", 0)
? ? fmt.Println()
? ? P2("%s,%s,%d", "hello", "world", 0)
}

TA貢獻1803條經(jīng)驗 獲得超6個贊
您需要傳遞a
給Printf
可變參數(shù)并將數(shù)組轉(zhuǎn)換為可變參數(shù),您需要遵循以下表示法:
func?P(format?string,?a?...interface{}){ ????fmt.Printf(format,?a...) }
Go 編程語言規(guī)范
將參數(shù)傳遞給 ... 參數(shù)
如果 f 是具有最終參數(shù)類型 ...T 的可變參數(shù),則在函數(shù)內(nèi)該參數(shù)等同于 []T 類型的參數(shù)。在每次調(diào)用 f 時,傳遞給最終參數(shù)的參數(shù)是一個類型為 []T 的新切片,其連續(xù)元素是實際參數(shù),所有這些參數(shù)都必須可分配給類型 T。因此,切片的長度是參數(shù)綁定到最終參數(shù),并且每個調(diào)用站點可能不同。
- 2 回答
- 0 關(guān)注
- 134 瀏覽
添加回答
舉報