目前,我有以下代碼:從不同的goroutine訪問通道
package main
import (
"fmt"
"math/rand"
"time"
)
var channel = make(chan []float32, 1)
func main() {
aMap := initMap()
for key := range aMap {
fmt.Print("the iteration number is: ", key)
theSlice := aMap[key]
channel <- theSlice
go transition(channel)
time.Sleep(2 * time.Second)
}
}
func transition(channel chan []float32) {
newSlice := make([]float32,5)
newSlice = <- channel
fmt.Println(newSlice)
//need to retrieve the last element of the other slice and put it on this newSlice
}
func initMap() map[int][]float32 {
aMap := make(map[int][]float32)
for i := 0; i < 2; i++ {
aMap[i] = []float32{rand.Float32(), rand.Float32(), rand.Float32(), rand.Float32(), rand.Float32()}
}
return aMap
}
我們有兩片,什麼我試圖做的是採取slice1的最後一個元素,使地圖吧slice2的最後一個元素,反之亦然。
我實際上正在研究一個涉及模擬細胞分裂和分化的更大項目。由於它是一個模擬,所有的分歧和差異正在同時進行。問題在於區分,其中類型A的單元格被轉換爲類型B的單元格。每種類型的單元存儲在不同的數據結構中,我想我可以爲每個不同的數據結構使用一個通道,並使用通道同時更改數據。
希望這是有道理的。有什麼建議麼?
感謝, CJ
編輯:看來我要問目前尚不清楚。對於上面的例子,我的問題是,我將如何去同時改變兩個切片中每個切片的最後一個元素?
我添加了一個編輯來闡明我所要求的東西。謝謝 – sSmacKk