2 回答

TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
這實(shí)際上有點(diǎn)微妙,讓我困惑了一秒鐘?!懊孛堋笔且粋€(gè)函數(shù)必須在調(diào)用它之前評估它的所有參數(shù)。所以它調(diào)用函數(shù)兩次以獲得 9 和 20,但其中一個(gè)評估恰好調(diào)用 Println。
為什么語言在調(diào)用函數(shù)之前評估其參數(shù)是相當(dāng)簡單的(當(dāng)涉及副作用時(shí),這種部分應(yīng)用程序很棘手,并且主要保留給函數(shù)式語言),但是隱藏具有副作用的函數(shù),例如在函數(shù)評估中打印應(yīng)該可能只是為了清楚起見而氣餒。
代碼可能更直接:
func main() {
arg1,arg2 := pow(3,2,10),pow(3,3,20)
fmt.Println(arg1, arg2)
}

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
fmt.Println() 在調(diào)用之前需要它的所有參數(shù)。
所以,您有 9,但是當(dāng)您獲得另一個(gè)值 (20) 時(shí),控制臺會打印其他內(nèi)容。
是否就像這樣:
package main
import "fmt"
func main() {
fmt.Println(9, f())
}
func f() int {
fmt.Println("This gets printed before")
return 20
}
輸出:
This gets printed before
9 20
- 2 回答
- 0 關(guān)注
- 241 瀏覽
添加回答
舉報(bào)