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

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

“for true {}”發(fā)生“函數(shù)末尾缺少返回值”

“for true {}”發(fā)生“函數(shù)末尾缺少返回值”

Go
滄海一幻覺 2023-05-08 17:52:09
看下面的兩個代碼片段:code1:func getIntJ1() (j int32) {    for {        j = 20        return    }}代碼2:func getIntJ2() (j int32) {    for true {        j = 20        return    }}游樂場:https://play.golang.org/p/ZnwjZDksZhu我認(rèn)為他們應(yīng)該在控制臺中打印相同的值20,但他們做不到我想要的??梢栽诳刂婆_code1打印值,但出現(xiàn)編譯錯誤:。 20code2missing return at end of function它們都有一個infinite loopin函數(shù),為什么它們顯示不同的結(jié)果?
查看完整描述

2 回答

?
富國滬深

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

為了防止函數(shù)在不返回其返回值的情況下運行結(jié)束,Go 有一個終止語句的概念。終止語句是某些類型的語句,可以很容易地表明執(zhí)行不會繼續(xù)超過該語句。帶有結(jié)果參數(shù)的函數(shù)必須以終止語句結(jié)束。

沒有和for沒有break循環(huán)條件算作終止語句,但有for循環(huán)條件不算,即使該循環(huán)條件始終為真。(規(guī)則可以擴展為將forwithtrue作為終止語句的條件,但是添加太多情況會使定義更加混亂而不是有用。)您的第二個getIntJ定義沒有終止語句。


查看完整回答
反對 回復(fù) 2023-05-08
?
慕俠2389804

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

按照說明插入退貨。


package main


import (

    "fmt"

)


func main() {

    fmt.Println(getIntJ1())

    fmt.Println(getIntJ2())

}


func getIntJ1() (j int32) {

    for {

        j = 20

        if j == 21 {

            continue

        }

        return

    }

}


func getIntJ2() (j int32) {

    for true {

        j = 20

        if j == 21 {

            continue

        }

        return

    }

    return

}

游樂場:https://play.golang.org/p/QbYQ6NkOMpQ


輸出:


20

20

對于getIntJ1, for {},return永遠(yuǎn)不需要。對于getIntJ2, for condition {},return可能需要。condition編譯器在什么時候可以更聰明true


for {}寫比寫更慣用for true {}。


查看完整回答
反對 回復(fù) 2023-05-08
  • 2 回答
  • 0 關(guān)注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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