-
Notifications
You must be signed in to change notification settings - Fork 0
KerwinKoo edited this page Jan 3, 2016
·
6 revisions
golang官方没有try关键字做代码尝试执行,但github中有人为其做了个try功能的语法糖。
package main
import (
"errors"
"fmt"
"github.com/matryer/try"
"math/rand"
"time"
)
func main() {
var value string
err := try.Do(func(attempt int) (bool, error) {
var err error
value, err = randomFunc()
if err != nil {
fmt.Println("run error:", err)
} else {
fmt.Println("run ok:", value)
}
return attempt < 5, err
})
if err != nil {
fmt.Println("ERROR:", err)
}
}
func randomFunc() (string, error) {
rand_seed := rand.New(rand.NewSource(time.Now().UnixNano()))
if rand_seed.Intn(100) < 50 {
return "test ok", nil
} else {
return "", errors.New("test error")
}
}代码解释: 需要