Мне интересно, почему моя функция не возвращает строки. Я использую замыкания, и моя цель - отобразить каждую строку из декодированного текста. Мне удалось добиться этого с помощью 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
из текста.