在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/GO/ Go語(yǔ)言函數(shù)里面不能聲明函數(shù)?

Go語(yǔ)言函數(shù)里面不能聲明函數(shù)?

如題:

package main

import (
    "fmt"
)

func main() {
    func say() {  // 這里會(huì)包語(yǔ)法錯(cuò)誤
        fmt.Println("Hello")
    }
}

只能使用變量聲明

package main

import (
    "fmt"
)

func main() {
    say := func() {
        fmt.Println("Hello")
    }
}

但是如上,使用變量聲明就不能使用遞歸了,因?yàn)樗鼪](méi)有名字,那么這個(gè)函數(shù)就只能寫(xiě)在外面來(lái)調(diào)用。還有個(gè)問(wèn)題就是golang里面匿名函數(shù)能使用遞歸么?能的話怎么使用?

回答
編輯回答
小曖昧

函數(shù)先于匿名函數(shù)定義前聲明即可。

package main

import (
    "fmt"
)

func main() {
    var say func(x *int)
    say = func(x *int) {
        if *x == 0 {
            fmt.Println(*x)
            return
        } else {
            fmt.Println(*x)
            *x--
            say(x)
        }
    }
    x := 10
    say(&x)
}
2017年11月3日 17:28
編輯回答
菊外人

我猜這應(yīng)該是你要的效果

package main

import "fmt"

var say = func(n int)  {
    var say func(int)
    say = func(n int)  {
        if n == 1 {
            fmt.Println("now n = 1")
        } else {
            fmt.Println("now n ", n)
            n = n -1
            say(n)
        }

    }
    say(n)
}

func main() {
    say(10)
}
2017年2月15日 01:40