我正在尝试在 Golang 中实现最简单的调用堆栈。作为示例,我从《Grocaem 算法》一书中获取了代码,该代码是用第二个 Python 编写的。
def greet(name):
print "hello, " + name + "!"
greet2(name)
print "getting ready to say bye..."
bye()
def greet2(name):
print "how are you, " + name + "?"
def bye():
print "ok bye!"
这是我在 Go 中实现的尝试。问题是我无法弄清楚为什么我不能将 bye() 函数嵌套在 greet2 函数中并在 greet 函数中调用它。我已经阅读了有关范围的信息,但是那里没有合理的示例。因此,如果您能告诉我如何修复此代码,我将非常感谢您。
package main
import "fmt"
func greet(name string) string {
fmt.Printf("hello, %v !\n", name)
greet2(name)
fmt.Printf("getting ready to say bye...\n")
bye() // тут проблема
return name
}
func greet2(name string) (func(), string) {
fmt.Printf("how are you, %v ?\n", name)
bye := func() { // и тут
fmt.Println("ok bye!")
}
return bye(), name
}
func main() {
greet("Sasha")
greet2("Sasha")
}