go_教程_02

  • 使用包
  • error
  • 并发--Goroutines

使用包

package main
import (
    "errors"
    "fmt"
)

error

//error
func f1(arg int) (int, error) {
    if arg == 42 {
        return -1, errors.New("can't work with 42")
    }
    return arg + 3 , nil
}
// 自定义的error
type argError struct {
    arg int
    prob string
}
/**
自定义的错误,就是实现系统的内置的这个接口
type error interface {
    Error() string
}
 */
func (e argError) Error() string { //实现接口
    return fmt.Sprintf("%d - %s", e.arg, e.prob)
}

func f2(arg int) (int,error) {
    if arg == 42 {
        return -1, argError{arg,"can't work with it"}
    }
    return arg + 3, nil
}

func main(){
    for _,i := range []int{7,42} {
        if r,e := f1(i); e != nil {
            fmt.Println("f1 failed: ", e)
        }else{
            fmt.Println("f1 worked: ", r)
        }
    }

    for _,i := range []int{7,42} {
        if r,e := f2(i); e != nil {
            fmt.Println("f2 failed: ", e)
        }else {
            fmt.Println("f2 worked: ", r)
        }
    }

    fmt.Println("=========")
    _, e := f2(42)
    /**
    把实现类输入error,获得属性
    e.(argError)
     */
    if ae,ok := e.(argError); ok {
        fmt.Println("ok: ", ok)
        fmt.Println("arg: ", ae.arg)
        fmt.Println("prob: ", ae.prob)
    }

}

并发--Goroutines

// Goroutines
func f(from string){
    for i := 0; i < 50; i++ {
        fmt.Println(from,i)
    }
}
func main(){
    fmt.Println("-----goroutines------")
    f("direct")
    // 使用go下面两个方法在不同线程异步执行
    go f("goroutine")
    go func(msg string) {
        fmt.Println(msg)
    }("going")

    fmt.Scanln()
    fmt.Println("done")
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Chapter 8 Goroutines and Channels Go enable two styles of...
    SongLiang阅读 1,633评论 0 3
  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 3,457评论 1 9
  • 哈哈,我的娃,昨晚妈妈睡着后,你都悄悄干了啥?我那有血有肉的小乖乖,怎么成了100%纯棉的?
    Angel刘咏霞阅读 161评论 0 0
  • 《星梦偶像计划》即将迎来大爆发,被改编成真人电视剧哦! 《星梦偶像计划》出自烟头hstone(白熊 )之手,讲述了...
    羽中樱桃阅读 4,721评论 0 0
  • 2018/11/17 有多自律就有多自由 【今日天气】 睛 18-24度 【早睡早起】22:37-6:05 【践行...
    雨晨_95a8阅读 67评论 0 0