我想知道为什么我的函数不返回行。我使用的是闭包,我的目标是显示解码文本中的每一行。我能够使用Python实现此目标。
这是我的Python代码:
def get_line():
lines = base64_decode()
index = 0
def closure():
nonlocal index
def go_next():
nonlocal index
next_line = line[index]
index += 1
return next_line
if index != len(lines):
return go_next()
else:
index = 0
return go_next()
return closure
这是我的Go代码:
package main
import (
"encoding/base64"
"fmt"
"log"
"strings"
)
func base64Decode() string {
str := "REDACTED"
data, err := base64.StdEncoding.DecodeString(str)
if err != nil {
log.Fatal("Error:", err)
}
return string(data)
}
func getLine(str string) func() string {
i := 0
lines := strings.Split(str, "\n")
return func() string {
if i != len(lines) {
nextLine := lines[i]
i++
return nextLine
}
return ""
}
}
func main() {
fmt.Println(getLine(base64Decode()))
}
运行此命令时会发生的情况是仅打印:0x1095850
,而不是文本中的This is the first line
。
答案 0 :(得分:2)
您必须调用该函数:
func main() {
fmt.Println(getLine(base64Decode())())
}