Пытаюсь реализовать простейший стек вызовов на Golang. В качестве образца взял код из книги "Грокаем Алгоритмы", код написан на 2Пайтоне.
Вот моя попытка реализации на Го. Проблема состоит в том, что я не могу понять почему моя вложенная функция bye() не вызывается. Про скоуп уже прочитал, но вменяемых примеров там не было. Так что если вы сможете показать, как мне исправить этот код, я буду вам очень благодарен.
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!"
Вот моя попытка реализации на Го. Проблема состоит в том, что я не могу понять почему моя вложенная функция bye() не вызывается. Про скоуп уже прочитал, но вменяемых примеров там не было. Так что если вы сможете показать, как мне исправить этот код, я буду вам очень благодарен.
C-подобный:
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")
}