相关疑难解决方法(0)

如何阻止goroutine

我有一个调用方法的goroutine,并在通道上传递返回值:

ch := make(chan int, 100)
go func(){
    for {
        ch <- do_stuff()
    }
}()
Run Code Online (Sandbox Code Playgroud)

我怎么停止这样的goroutine?

go goroutine channels

90
推荐指数
6
解决办法
9万
查看次数

在golang中使用空接口或空结构作为映射值的任何区别

我正在使用此构造来模拟一组

type MyType uint8
map[MyType]interface{}
Run Code Online (Sandbox Code Playgroud)

然后我添加所有键并将它们映射到nil.

我了解到它也可以使用

map[MyType]struct{}
Run Code Online (Sandbox Code Playgroud)

使用空结构的任何好处interface{}.

go

26
推荐指数
2
解决办法
9679
查看次数

Golang:匿名结构和空结构

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)

concurrency channel go goroutine

24
推荐指数
4
解决办法
3万
查看次数

标签 统计

go ×3

goroutine ×2

channel ×1

channels ×1

concurrency ×1