go语言初学

1.创建目录

mkdir goTest
cd goTest
go mod init github.com/hds

2.创建main.go

vim main.go

package main

import (
     "fmt"
)

func main() {
      fmt.Println("zhangyabin")
}

3.编译

go build -o main main.go

4.运行

./main

5.go协程超时设置与等待go协程结束

package main

import (
	"fmt"
	"time"
	"context"
	"sync"
)
var wg sync.WaitGroup //定义一个同步等待的组

func AsyncCall(n int) {
	ctx, cancel := context.WithTimeout(context.Background(), time.Duration(time.Second*20))
	defer cancel()
	go func() {
		fmt.Println("start 执行export:", n)
		d := time.Duration(n) * time.Second
		time.Sleep(d)
		fmt.Println("end 执行export:", n)
		defer cancel() 
	}()

	select {
	case <-ctx.Done():
		wg.Done() //减去一个计数
		fmt.Println("call successfully!!!")
		return
	case <-time.After(time.Duration(time.Second * 21)):
		wg.Done() //减去一个计数
		fmt.Println("timeout!!!")
		return
	}
	
}


func main() {
	
	go AsyncCall(1)
	wg.Add(1) //添加一个计数
	go AsyncCall(5)
	wg.Add(1) //添加一个计数
	go AsyncCall(22)
	wg.Add(1) //添加一个计数
	wg.Wait() //阻塞直到所有任务完成
	fmt.Println("hds")
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值