我在管理 Go 中的结构时遇到了一些问题。我有复杂的结构和两个基于该结构的变量——“previous”和“current”。我正在尝试从 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
}
我哪里错了?提前致谢。
函数式编程
相关分类