Skip to content
KerwinKoo edited this page Jan 3, 2016 · 6 revisions

golang-try

golang官方没有try关键字做代码尝试执行,但github中有人为其做了个try功能的语法糖。

try用法举例

package main

import (
	"errors"
	"github.com/matryer/try"
	"math/rand"
	"time"
	"fmt"
)

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")
	}
}

[[TOC]]

Clone this wiki locally