2 回答

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