3 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
當(dāng) 為 false 時(shí),您的遞歸代碼將始終返回“false” false c。請(qǐng)參閱下面的正確代碼。
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)
}

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
這將導(dǎo)致 2 級(jí)遞歸。在第一級(jí)中,您將 c 設(shè)置為 false。然后你調(diào)用 a(true) 并且你處于返回 true 的第二級(jí)?,F(xiàn)在您回到了第 1 層的 a(true) 行,下一行是將 false 作為字符串和布爾值返回。因此,最終輸出為 false。
我認(rèn)為您正在嘗試使用返回值,但現(xiàn)在情況并非如此。

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
目前尚不清楚您認(rèn)為您的代碼應(yīng)該做什么,但它實(shí)際上在做什么:
您
a
使用以下值進(jìn)行調(diào)用false
:它檢查是否
c
為真:if c {
但事實(shí)并非如此,所以它繼續(xù)
它再次調(diào)用
a
,這次使用 valuetrue
,但完全忽略結(jié)果:a(true)
然后返回 false:
return "false", false
這意味著步驟 #2 是完全無操作的(并且可能被編譯器完全刪除)。
也許你想用 的返回值做一些事情a(true)
?
- 3 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)