美文网首页
golang中goroutine错误捕获讲解

golang中goroutine错误捕获讲解

作者: 包牙齿 | 来源:发表于2019-05-17 22:26 被阅读0次

之前在做其他语言是,对于异步调用,总有返回值和错误返回,并且能接收,对其进行处理。
在go语言中,对于协程goroutine的代码,因为没有返回值接收,导致新手在学习时候会有困惑:
goroutine的返回值(包括错误)怎么捕获呢?
下面我们写一个列子来说明下。

package main

import (
    "fmt"
    "log"
    "time"
)

type Resp struct {
    data  int
    error error
}

func main() {
    handleMsg()
}

func handleMsg() {
    resp := make(chan Resp)
    stop := make(chan struct{})
    go func() {
        t := time.Tick(time.Second)
        index := 0
        for {
            select {
            case <-t:
                resp <- Resp{
                    data: index,
                }
                index++
            case <-stop:
                resp <- Resp{
                    error: fmt.Errorf("time tick stop error"),
                }
            }
        }
    }()
    for {
        select {
        case val := <-resp:
            if val.error != nil {
                log.Fatal(val.error)
            }
            if val.data == 5 {
                stop <- struct{}{}

            }
            fmt.Println("index", val.data)

        }
    }
}

这里Resp封装了接收值和错误类型,

type Resp struct {
    data  int
    error error
}

利用select的接手值,来判断当前goroutine的结果是否正确。

相关文章

  • golang中goroutine错误捕获讲解

    之前在做其他语言是,对于异步调用,总有返回值和错误返回,并且能接收,对其进行处理。在go语言中,对于协程gorou...

  • 浅谈goroutine

    以下内容均属个人理解,如果错误,还请斧正 What goroutine是golang中的coroutine,也叫协...

  • goroutine 及channel

    本文主要介绍goroutine 和channel的使用。 基础知识介绍 goroutine 是 golang 中在...

  • go学习笔记(四)——并发

    1. goroutine 什么是goroutine goroutine是golang的最小执行单元,每个go程序至...

  • go语言区块链开发之并发 https://blockchainb

    1、什么是 channel(管道/通道)? 在 golang 中,channel 是多个 goroutine (线...

  • go

    https://golang.google.cn/ goroutine简单示例 goroutine将结果通过cha...

  • goroutine与panic

    如果某个goroutine panic了,而且这个goroutine里面没有捕获(recover),那么整个进程就...

  • golang channel 系统学习

    goroutine是个啥 使用golang的channel之前,我们需要先了解go的goroutine。Go 语言...

  • Golang goroutine

    goroutine 是 Golang的最大卖点之一,它让并发编程变的十分简单,仅仅使用 go关键字就能快速的创建g...

  • Golang goroutine

    goroutine简介 goroutine是go语言中最为NB的设计,也是其魅力所在,goroutine的本质是协...

网友评论

      本文标题:golang中goroutine错误捕获讲解

      本文链接:https://www.haomeiwen.com/subject/bfmaaqtx.html