go学习笔记(9)

趁着最近有点时间,尽量抽点时间学习一下后端方面的知识。也不让自己懒得,今年得把golang 好好学一下。

今晚看到chan,通道,和goroutine,单词也有点不会拼写。第一次看的时候,不知道什么,只知道是协程,比起线程还要写。知道golang提及到并发编程,会用到这两个知识点。

chan 的声明


map 和chan 均使用make来创建。如下面 var ma = make(map[string] int)

  var ch = make(chan int)  //创建一个阻塞的通道,为整形
  var ch = make(chan string) //创建一个阻塞的通道,为字符串

通道还可以带上缓冲区

  var ch = make(chan int,2)  //创建一个阻塞的通道,为整形
  var ch = make(chan string,2) //创建一个阻塞的通道,为字符串

这里有点像事件那样定义一个广播者,可读可写

  ch = <- 1 //写入
  <-ch    //读取

上面定义的通道有两种操作可读可写。

chan 的小练习


记录一下通道和go练习

package main

import (
	"fmt"
	"strconv"
	"time"
)

func main() {

	fmt.Println("学习通道")
	var driver = make(chan int) //创建一个不带缓冲阻塞的通道

	go func() {

		fmt.Println("正在执行计算")
		time.AfterFunc(5*time.Second, func() {

			fmt.Println("执行了")
			driver <- 1
		})

	}()
	v := <-driver //这里会阻塞,等到5秒后会输出对应的值
	fmt.Println("收到值" + strconv.Itoa(v))

}

在这里插入图片描述

发布了1410 篇原创文章 · 获赞 64 · 访问量 236万+

猜你喜欢

转载自blog.csdn.net/hero82748274/article/details/86557928