```go
package main
import "fmt"
import "time"
func fun1() (string error){
//模拟 业务 处理
time.Sleep(time.Second * 300)
var result,err=fun2()
if err !=nil {
return "no",err
}
return "ok",nil
}
func main() {
var result,err = fun1()
fmt.Println(result,err)
}
```
假设fun1需要执行很久,适合用error返回值表达函数有错误吗,如果 不用返回 值 ,用panic表达函数有错误 合适吗
```go
func AsyncCall() error {
ctx, cancel := context.WithTimeout(context.Background(), time.Duration(time.Second * 300))
defer cancel()
go func(ctx context.Context) {
// 具体业务实现
}(ctx)
select {
case <-ctx.Done():
fmt.Println("successfully!!!")
return nil
case <-time.After(time.Duration(time.Second * 305)):
fmt.Println("timeout!!!")
return errors.New("timeout")
}
}
```
#4
更多评论