亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang:可變參數

Golang:可變參數

Go
慕森王 2021-11-15 16:05:27
當我編譯以下程序時func myPrint(v ...interface{}) {        fmt.Println("Hello", v...)}func main() {    myPrint("new", "world")}我收到編譯錯誤too many arguments in call to fmt.Println我認為 v... 將擴展為第二個、第三個參數,而 fmt.Println 將看到三項可變參數列表。我認為這相當于fmt.Println("Hello", "new", "world")為什么會報錯。
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

嘗試這個。它將 Hello 附加到可變參數參數,然后使用println.


package main


import "fmt"


func myPrint(v ...interface{}) {

    a := append([]interface{}{"Hello"}, v...)   // prepend "Hello" to variadics

    fmt.Println(a...)                           // println the whole lot

}

func main() {

    myPrint("new", "world")

}


查看完整回答
反對 回復 2021-11-15
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

您在調用fmt.Println(). 您實際發送的是 2 個參數:一個字符串,然后是interface{}擴展類型的切片。函數調用不會將其連接成單個切片。


此設計將編譯并運行您期望的結果:


func myPrint(v ...interface{}) {

    fmt.Print("Hello ")

    fmt.Println(v...)

}


func main() {

    myPrint("new", "world")

}


查看完整回答
反對 回復 2021-11-15
  • 2 回答
  • 0 關注
  • 282 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號