GO语言简介
Go 自带了编译器,因此无须单独安装编译器。
Go语言的并发是基于 goroutine 的,goroutine 类似于线程,但并非线程。可以将 goroutine 理解为一种虚拟线程。Go 语言运行时会参与调度 goroutine,并将 goroutine 合理地分配到每个 CPU 中,最大限度地使用CPU性能。
多个 goroutine 中,Go 语言使用通道(channel)进行通信,程序可以将需要并发的环节设计为生产者模式和消费者的模式,将数据放入通道。通道的另外一端的代码将这些数据进行并发计算并返回结果,如下图所示。
下面代码中的生产者每秒生成一个字符串,并通过通道传给消费者,生产者使用两个 goroutine 并发运行,消费者在 main() 函数的 goroutine 中进行处理。
package main
import (
“fmt”
“math/rand”
“time”
)
// 数据生产者
func producer(header string, channel chan<- string) {
// 无限循环, 不停地生产数据
for {
// 将随机数和字符串格式化为字符串发送给通道
channel <- fmt.Sprintf("%s: %v", header, rand.Int31())
// 等待1秒
time.Sleep(time.Second)
}
}
// 数据消费者
func customer(channel <-chan string) {
// 不停地获取数据
for {
// 从通道中取出数据, 此处会阻塞直到信道中返回数据
message := <-channel
// 打印数据
fmt.Println(message)
}
}
func main() {
// 创建一个字符串类型的通道
channel := make(chan string)
// 创建producer()函数的并发goroutine
go producer(“cat”, channel)
go producer(“dog”, channel)
// 数据消费函数
customer(channel)
}
- Go 语言简介(上)— 语法
- Go 语言简介(上)— 语法
- [摘]Go 语言简介(下)— 特性
- Go语言开发(一)、Go语言简介
- go语言简介
- 简介Go语言中的select语句的用法
- Go语言知识积累——特点简介与windows开发环境搭建
- Go语言知识积累——特点简介与windows开发环境搭建
- Go语言编程开发入门简介
- 【链块学院09期】区块链基础语言(一)——Go语言简介
- Go 语言简介(上)— 语法
- Go语言基础入门--简介
- Go语言知识积累——特点简介与windows开发环境搭建
- Go语言简介(上)— 语法
- GO语言的进阶之路-go的程序结构以及包简介
- [go语言]go语言简介
- Go 语言简介(下)— 特性
- Go 语言简介
- 看到go语言简介想到的
- Go语言基础—Go语言简介