请考虑代码https://play.golang.org/p/aO07_PoQLuh
我有一个结构列表,我从中读取以了解我在途中生成的成员。
对于每个结构,我都有一个提高计数器的方法,但是我缺少这里的酱汁。正如您从 o/p 中看到的那样,我已经增加了SBytesSent
,但是当我读取结构列表并检查它时,它的值是 0。
处理这个问题的最佳方法是什么?谢谢!
package main
import (
"fmt"
"sync"
)
type destination struct {
Name string
SBytesSent int64
ABytesSent int64
LastSeenAlive int64
Mutex *sync.Mutex
}
type destinations []destination
var (
destination_list destinations
myHosts = []string{"host1", "host2", "host3"}
)
func main() {
fmt.Println("Hello, playground")
for i, _ := range myHosts {
newDest := myHosts[i]
newd := destination{Name: newDest}
newd.Mutex = &sync.Mutex{}
destination_list = append(destination_list, newd)
}
i := 0
for {
increment()
status()
i += 1
if i == 3 {
break
}
}
}
func (self *destination) incrementSBytes(a int) {
self.Mutex.Lock()
defer self.Mutex.Unlock()
self.SBytesSent += int64(a)
fmt.Printf("new val %d\n", self.SBytesSent)
}
func (self *destination) Status() {
fmt.Printf("my val %d\n", self.SBytesSent)
}
func increment() {
for i, _ := range destination_list {
dest := destination_list[i]
dest.incrementSBytes(33)
}
}
func status() {
for i, _ := range destination_list {
dest := destination_list[i]
dest.Status()
}
}
编辑1
请参阅https://play.golang.org/p/5uqqc3OKYDs - 我已经增加到host3
-6
但到最后他们都显示了99
。如何让host3保留之前的增量并显示99 + 6 = 105
?
江户川乱折腾
慕标琳琳
相关分类