第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

這個 Go 打印語句的順序是什么?

這個 Go 打印語句的順序是什么?

Go
手掌心 2021-11-08 15:52:51
我正在學習關(guān)于 Golang 的“A Tour of GO”教程和以下代碼:package mainimport (    "fmt"    "math")func pow(x, n, lim float64) float64 {    if v := math.Pow(x, n); v < lim {        return v    } else {        fmt.Printf("%g >= %g\n", v, lim)    }    // can't use v here, though    return lim}func main() {    fmt.Println(        pow(3, 2, 10),        pow(3, 3, 20),    )}將打印“27 >= 20 9 20”。我很困惑為什么它不是“9 27 >= 20 20”第一次調(diào)用 pow(3,2,10) 不應該返回 9,打印它,然后調(diào)用 pow(3,3,20) 并打印其余的嗎?
查看完整描述

2 回答

?
繁花如伊

TA貢獻2012條經(jīng)驗 獲得超12個贊

這實際上有點微妙,讓我困惑了一秒鐘?!懊孛堋笔且粋€函數(shù)必須在調(diào)用它之前評估它的所有參數(shù)。所以它調(diào)用函數(shù)兩次以獲得 9 和 20,但其中一個評估恰好調(diào)用 Println。


為什么語言在調(diào)用函數(shù)之前評估其參數(shù)是相當簡單的(當涉及副作用時,這種部分應用程序很棘手,并且主要保留給函數(shù)式語言),但是隱藏具有副作用的函數(shù),例如在函數(shù)評估中打印應該可能只是為了清楚起見而氣餒。


代碼可能更直接:


func main() {

    arg1,arg2 := pow(3,2,10),pow(3,3,20)

    fmt.Println(arg1, arg2)

}


查看完整回答
反對 回復 2021-11-08
?
慕標5832272

TA貢獻1966條經(jīng)驗 獲得超4個贊

fmt.Println() 在調(diào)用之前需要它的所有參數(shù)。


所以,您有 9,但是當您獲得另一個值 (20) 時,控制臺會打印其他內(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


查看完整回答
反對 回復 2021-11-08
  • 2 回答
  • 0 關(guān)注
  • 226 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號