我有一个调用方法的goroutine,并在通道上传递返回值:
ch := make(chan int, 100)
go func(){
for {
ch <- do_stuff()
}
}()
Run Code Online (Sandbox Code Playgroud)
我怎么停止这样的goroutine?
我正在使用此构造来模拟一组
type MyType uint8
map[MyType]interface{}
Run Code Online (Sandbox Code Playgroud)
然后我添加所有键并将它们映射到nil.
我了解到它也可以使用
map[MyType]struct{}
Run Code Online (Sandbox Code Playgroud)
使用空结构的任何好处interface{}.
http://play.golang.org/p/vhaKi5uVmm
package main
import "fmt"
var battle = make(chan string)
func warrior(name string, done chan struct{}) {
select {
case opponent := <-battle:
fmt.Printf("%s beat %s\n", name, opponent)
case battle <- name:
// I lost :-(
}
done <- struct{}{}
}
func main() {
done := make(chan struct{})
langs := []string{"Go", "C", "C++", "Java", "Perl", "Python"}
for _, l := range langs { go warrior(l, done) }
for _ = range langs { <-done }
}
Run Code Online (Sandbox Code Playgroud)
[第1个问题]
done <- struct{}{} …Run Code Online (Sandbox Code Playgroud)