type Device struct {
名稱字串
IP 字串 字串博爾 //一個設備足以說明問題。
var devices = []Device{
設備{名稱。"phone", IP: "192.168.1.58", Status: false}。
}
func main(){
for range time.Tick(2 * time.Second) {
for _, j := range devices {
fmt.Printf("%s: %v
"/span>, j.Name, j.Status)
j.Status = true "%s: %v", j.Name, j.Status
fmt.Printf("%s: %v")
--------
", j.Name, j.Status)
}
}
}
我希望輸出結果是
phone: false
電話。true
------
phone: true 電話: true
phone: true true
------
phone: 真
phone: true true
------
...
但我得到的是
phone。false
電話。true
--------
phone: false 電話: true
phone: true true
--------
...
基本上,Status值在每次迭代時被重置。
如果我把我的設備移到一個串列之外,它就會像預期的那樣作業,就像這樣:
如果我把我的設備移到一個串列之外,它就會像預期的那樣作業。
var j = Device{Name: "phone", IP: "192.168.1.58", Status: false}。
for range time.Tick(2 * time.Second) {
fmt.Printf("%s: %v
"/span>, j.Name, j.Status)
j.Status = true。
fmt.Printf("%s: %v")
--------
", j.Name, j.Status)
}
我做錯了什么?
uj5u.com熱心網友回復:
你可以按照@Marc的建議,將你的分片型別改為指標;或者你可以直接通過分片的索引來更新分片:
for i := range devices {
devices[i].Status = true
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/308536.html
標籤:
