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

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

從函數返回的正確方法是什么?

從函數返回的正確方法是什么?

Go
蠱毒傳說 2023-07-26 17:10:01
我很困惑應該如何從函數返回值。我正在嘗試下面的例子:將 false 傳遞給函數 ac 的值在函數 a 中將為 false它將進行遞歸調用,這會將 c 的值從 false 更改為 true所以函數應該返回一個字符串“true”和bool true,但它返回一個字符串“false”和bool falsepackage mainimport (    "fmt")func a(c bool) (string, bool) {    if c {        return "true", true    }    a(true)    return "false", false}func main() {    s, ok := a(false)   fmt.Println(s, ok)}https://play.golang.org/p/uSIN2k0G3QW
查看完整描述

3 回答

?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

當 為 false 時,您的遞歸代碼將始終返回“false” false c。請參閱下面的正確代碼。


package main


import (

    "fmt"

)


func a(c bool) (string, bool) {

    if c {

        return "true", true

    }

    return a(true)

}


func main() {

    s, ok := a(false)

   fmt.Println(s, ok)

}


查看完整回答
反對 回復 2023-07-26
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

這將導致 2 級遞歸。在第一級中,您將 c 設置為 false。然后你調用 a(true) 并且你處于返回 true 的第二級。現在您回到了第 1 層的 a(true) 行,下一行是將 false 作為字符串和布爾值返回。因此,最終輸出為 false。

我認為您正在嘗試使用返回值,但現在情況并非如此。


查看完整回答
反對 回復 2023-07-26
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

目前尚不清楚您認為您的代碼應該做什么,但它實際上在做什么:

  1. a使用以下值進行調用false

    它檢查是否c為真:

    if c {

    但事實并非如此,所以它繼續

  2. 它再次調用a,這次使用 value true,但完全忽略結果:

    a(true)
  3. 然后返回 false:

    return "false", false

這意味著步驟 #2 是完全無操作的(并且可能被編譯器完全刪除)。

也許你想用 的返回值做一些事情a(true)



查看完整回答
反對 回復 2023-07-26
  • 3 回答
  • 0 關注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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