return переменных в цикле golang
Всем привет, есть одна проблемка, мне нужно чтобы функция возвращала переменную из цикла for, проблемы с видимостью, не знаю как исправить :( Вот код:
func Open(path string) (string, error) {
f, err := os.Open(path)
if err != nil {
return "", err
}
data := make([]byte, 64)
for {
n, err := f.Read(data) // вот эта переменная "n"
if err == io.EOF {
break
}
}
return string(data[:n]), nil // пишет что "undefined: n", нужно возвратить "n" из цикла
}
Ответы (1 шт):
Автор решения: Kers
→ Ссылка
Просто добавьте в цикл сохранение в переменную за его пределами и в последствии верните эту переменную.
Пример можно решить:
package main
import "fmt"
func main() {
var sl []string // Сюда запишем данные из цикла
var users = [3]string{"data1", "data2", "data3"} // Произвольные данные
for -, value := range users {
sl = append(sl, value) // Добавляем данные в срез
}
return sl // возвращаем срез
}
В вашем случае код будет примерно таким:
func Open(path string) (string, error) {
f, err := os.Open(path)
if err != nil {
return "", err
}
data := make([]byte, 64)
var new_n []int
for {
n, err := f.Read(data) // вот эта переменная "n"
new_n := n
if err == io.EOF {
break
}
}
return string(data[:new_n]), nil // пишет что "undefined: n", нужно возвратить "n" из цикла
}