我试图弄清楚如何在 Go 中使前向交换函数并发用于学习概念目的:
package main
import "fmt"
func Swap(a, b int) (int, int) {
return b, a
}
func main() {
for i := 0; i <10; i++ {
fmt.Println(Swap(i+1, i))
}
}
到目前为止,我想出了这个解决方案:
package main
import "fmt"
// Only Send Channel
func Swap(a, b chan<- int) {
go func() {
for i := 0; i < 10; i++ {
a <- i + 1
b <- i
}
}()
}
func main() {
a := make(chan int)
b := make(chan int)
Swap(a, b)
for i := 0; i < 10; i++ {
fmt.Printf("chan a received: %d | chan b received: %d\n", <-a, <-b)
}
}
它似乎有效,但我不能确定。我如何衡量这一点,有谁知道如何在 Go 中真正使一个简单的 Swap 函数并发?