У меня есть некоторые проблемы с управлением структурами в Go. У меня есть сложная структура и две переменные, основанные на этой структуре - «предыдущая» и «текущая». Я пытаюсь прочитать данные из tarfile, сделать некоторые расчеты и заменить предыдущие с текущими.
Но на следующей итерации чтения, когда я читаю в текущем, мне кажется, что содержимое «предыдущего» перезаписывается и обе переменные становятся одинаковыми.
Структура определяется следующим образом:
type Mystruct struct {
Data [][]sql.NullString
Rnames []string
Nsize int
Msize int
Namemaxlen map[string]int
Valid bool
Err error
}
Переменные не являются указателями. Копирование выполняется как прямое назначение: предыдущий = текущий.
tr := tar.NewReader(f)
var prev, curr Mystruct
for {
hdr, err := tr.Next()
if err == io.EOF {
break
} else if err != nil {
log.Panicln(err)
}
data := make([]byte, hdr.Size)
if _, err := io.ReadFull(tr, data); err != nil {
log.Panicln(err)
}
if err = json.Unmarshal(data, &curr); err != nil {
log.Panicln(err)
}
if prev.Valid != true {
prev = curr
continue
}
// other computations here
prev = curr
}
Где я не прав? Заранее спасибо.