golanggo 操作, 有可能超时, 可以使用 select 来解决这个问题, 如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package main

import (
"fmt"
"time"
)
//设定了一个 "超时" 的函数
func timeout(c chan int) {

time.Sleep(10 * time.Second)

c <- 1
}

func main() {

//创建两个 channel
var c1 = make(chan int)
var c2 = make(chan int)

//调用一个超时的 go
go timeout(c1)

//解决超时
go func() {
time.Sleep(1 * time.Second)
c2 <- 0
}()

select {
case <-c1:
fmt.Println("going!") //正常通过 c1 获取数据
case <-c2:
fmt.Println("timeout") //避免超时
}
}