首页 > 编程语言 >Golang:4.1、Golang 并发编程-协程

Golang:4.1、Golang 并发编程-协程

时间:2022-10-23 16:36:02浏览次数:54  
标签:www 协程 fmt Golang Jack https Tom 4.1 com

4.1、Golang 并发编程-协程

共语言中的并发是函数相互独立运行的能力。goroutines 是并发运行的函数

创建协程

go task()

示例 1

package main

import (
    "fmt"
    "time"
)

func showMessage(message string) {
    for i := 0; i < 5; i++ {
        fmt.Println(message)
        time.Sleep(time.Millisecond * 100)
    }
}

func main() {
    showMessage("Tom")
    showMessage("Jack")
}

输出

Tom
Tom
Tom
Tom
Tom
Jack
Jack
Jack
Jack
Jack
func main() {
    go showMessage("Tom")
    showMessage("Jack")
}

输出

Jack
Tom
Tom
Jack
Jack
Tom
Tom
Jack
Jack
Tom

示例 2

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "time"
)

func responseSize(url string) {
    fmt.Println("step1: ", url)
    response, err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println("step2: ", url)
    defer response.Body.Close()

    fmt.Println("step3: ", url)
    body, err := ioutil.ReadAll(response.Body)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("step4: ", len(body))
}

func main() {
    go responseSize("https://www.baidu.com/")
    go responseSize("https://www.jd.com/")
    go responseSize("https://www.taobao.com/")
    time.Sleep(time.Second * 10)
}

输出

step1:  https://www.baidu.com/
step1:  https://www.jd.com/
step1:  https://www.taobao.com/
step2:  https://www.jd.com/
step3:  https://www.jd.com/
step4:  160260
step2:  https://www.baidu.com/
step3:  https://www.baidu.com/
step4:  227
step2:  https://www.taobao.com/
step3:  https://www.taobao.com/
step4:  87347

标签:www,协程,fmt,Golang,Jack,https,Tom,4.1,com
From: https://blog.51cto.com/mouday/5787360

相关文章

  • golang中的字符串
    0.1、索引https://waterflow.link/articles/16664498749741、字符串编码在go中rune是一个unicode编码点。我们都知道UTF-8将字符编码为1-4个字节,比如我们常用的汉字,UTF-......
  • golang中的字符串
    0.1、索引https://waterflow.link/articles/16664498749741、字符串编码在go中rune是一个unicode编码点。我们都知道UTF-8将字符编码为1-4个字节,比如我们常用的汉字,UTF......
  • golang postman api(environments)
    获取所有environmentspackagemainimport("fmt""net/http""io/ioutil")funcmain(){url:="https://api.getpostman.com/environments"method:="GET"clien......
  • Golang:3.5、Golang 指针
    3.5、Golang指针指针取地址:&取值:*指针地址:每一个变量都有一个地址,地址代表变量在内存中的位置Go语言中的值类型(int、float、bool、string、array、struct)对应的指......
  • Golang:3.6、Golang 结构体 struct
    3.6、Golang结构体struct类型定义和类型别名类型定义的语法typeNewTypeType示例packagemainimport"fmt"funcmain(){//定义类型typeMyIntint......
  • Golang:3.7、Golang接口 interface
    3.7、Golang接口interfacego语言中的接口,是一种新的类型定义,它把所有的具有共性的方法定义在一起,任何其他类型制药实现了这些方法就是实现了这个接口语法//定义接口ty......
  • C++ 核心 4.1 类的封装
    4类和对象面向对象三大特性:封装、继承、多态万物皆对象。对象=属性+行为类是抽象的对象。比如路上有很多(具体的)车,但抽象出来都属于车。定义类的语法:class类名{......
  • Golang-Gin Response 统一返回restful格式的数据
    目的:gin返回restful格式的数据,返回的200,201的数据也包括异常时的404/500等情况直接调用即可packageresponseimport( "github.com/gin-gonic/gin" "net/http")......
  • Golang 几个小时前 几分钟 几天前的处理
    在用golang爬虫的时候总会遇到10天前10分钟前刚刚这种很影响我们爬取正常事件所以我写了个方法来格式化这种事件packageutilsimport( "fmt" "regexp" "strco......
  • Golang 和 Python 随机生成N位字符串
    Golang:funcRandomString(nint)string{ varletters=[]byte("ABCDEFGHIGKLMNOPQRSTUVWXYZabcdefghigklmnopqrstuvwxyz0123456789") result:=make([]byte,n) /......