例如,我有这个代码http://play.golang.org/p/9U22NfrXeq// A concurrent prime sievepackage main// Send the sequence 2, 3, 4, ... to channel 'ch'.func Generate(ch chan<- int) { for i := 2; ; i++ { ch <- i // Send 'i' to channel 'ch'. }}// Copy the values from channel 'in' to channel 'out',// removing those divisible by 'prime'.func Filter(in <-chan int, out chan<- int, prime int) { for { i := <-in // Receive value from 'in'. if i%prime != 0 { out <- i // Send 'i' to 'out'. } }}// The prime sieve: Daisy-chain Filter processes.func main() { ch := make(chan int) // Create a new channel. go Generate(ch) // Launch Generate goroutine. for i := 0; i < 10; i++ { prime := <-ch print(prime, "\n") ch1 := make(chan int) go Filter(ch, ch1, prime) ch = ch1 }}如何查看频道内的内容?例如我想调试这一行:prime := <-ch通过在 gdb 中键入 'p ch' 只打印通道的地址。如何获取内容?
1 回答
心有法竹
TA贡献1866条经验 获得超5个赞
你只需要取消引用 ch。用一个非常小的程序:
package main
func main() {
ch := make(chan int, 10)
ch <- 1
ch <- 2
ch <- 4
<-ch
}
调试:
(gdb) p *ch
$1 = struct hchan<int> = {1, 2, 4}
- 1 回答
- 0 关注
- 209 浏览
添加回答
举报
0/150
提交
取消