Go语言 Go程基础

本篇文章主要为Go语言 Go程基础内容介绍及代码示例。

目录

并发与并行

Go程介绍

简单go程示例

匿名函数写法

启动多个子go进程

总结


并发与并行

并发:电脑同时听歌,看小说,看电影。cpu根据时间片进行划分,交替执行这个三个程序。

我们人可以感觉是同时产生的。

并行:多个CPU(多核)同时执行

Go程介绍

c语言里面实现并发过程使用的是多线程(C++的最小资源单元),进程

go语言里面不是线程,而是go程 ==> goroutine

go程是go语言原生支持的

每一个go程占用的系统资源远远小于线程,

一个go程大约需要4K-5K的内存资源

一个程序可以启动大量的go程

线程:启动几十个

go程:可以启动成百上千个,对于实现高并发,性能非常好

只需要在目标函数前加上go即可

简单go程示例

启动一个主go程和一个子go程。

示例如下:

Go 复制代码
package main

import (
   "fmt"
   "time"
)

func main() {
   // 启动子go程
   go display()

   // 主go程
   count := 1
   for{
      fmt.Println("这是主go程:", count)
      count++
      time.Sleep(1 * time.Second)
   }
}

// 这个将用于子go程使用
func display() {
   count := 1
   for {
      fmt.Println(" ======> 这是子go程:", count)
      count++
      time.Sleep(1 * time.Second)
   }
}

运行结果:

bash 复制代码
这是主go程: 1
 ======> 这是子go程: 1
 ======> 这是子go程: 2
这是主go程: 2
 ======> 这是子go程: 3
这是主go程: 3
这是主go程: 4
 ======> 这是子go程: 4
 ======> 这是子go程: 5
这是主go程: 5

匿名函数写法

把刚才的简单go程示例改为匿名函数写法。

示例如下:

Go 复制代码
package main

import (
   "fmt"
   "time"
)

func main() {
   // 启动子go程
   go func() {
      count := 1
      for {
         fmt.Println(" ======> 这是子go程:", count)
         count++
         time.Sleep(1 * time.Second)
      }
   }()

   count := 1
   for {
      fmt.Println("这是主go程:", count)
      count++
      time.Sleep(1 * time.Second)
   }
}

启动多个子go进程

在原来的基础上,使用for循环,启动多个子进程。

示例如下:

Go 复制代码
package main

import (
   "fmt"
   "time"
)

// 这个将用于子go程使用
func displays(num int) {
   count := 1
   for {
      fmt.Println(" ======> 这是子go程:", num, "当前count:", count)
      count++
      time.Sleep(1 * time.Second)
   }
}

func main() {
   // 启动子go程
   for i := 0; i < 3; i++ {
      go displays(i)
   }

   count := 1
   for {
      fmt.Println("这是主go程:", count)
      count++
      time.Sleep(1 * time.Second)
   }
}

运行结果:

bash 复制代码
这是主go程: 1
 ======> 这是子go程: 2 当前count: 1
 ======> 这是子go程: 0 当前count: 1
 ======> 这是子go程: 1 当前count: 1
这是主go程: 2
 ======> 这是子go程: 1 当前count: 2
 ======> 这是子go程: 2 当前count: 2
 ======> 这是子go程: 0 当前count: 2
 ======> 这是子go程: 0 当前count: 3
 ======> 这是子go程: 1 当前count: 3
 ======> 这是子go程: 2 当前count: 3
这是主go程: 3

总结

本篇文章主要为Go语言 Go程基础内容介绍及代码示例。

相关推荐
xiaoye-duck1 分钟前
《C++ 项目:手写大模型接入 SDK》DataManager数据管理模块:SQLite持久化存储
开发语言·数据库·c++·sqlite
Evand J4 分钟前
【MATLAB例程,PMSM19】永磁同步电机(PMSM)基于多速率无迹卡尔曼滤波(UKF)的转速与转子位置估计。测量缺失、状态预测与恢复性能分析
开发语言·matlab·电机·ekf·卡尔曼·电机滤波
喵了几个咪13 分钟前
GoWind Flow 拆解:一个 Go 工作流引擎与它的双模式设计器
开发语言·人工智能·后端·golang
codeejun24 分钟前
每日一Go·MySQL-14、慢 SQL 产生原因全解
sql·mysql·golang
倔强的石头_26 分钟前
AI数据库是什么?我把金仓KES的库内三件套拆开看了一遍
后端
꧁细听勿语情꧂39 分钟前
二叉树余题,排序、直接插入排序、希尔排序
c语言·开发语言·数据结构·算法
杨凯凡1 小时前
Spring Boot 大文件下载如何实现断点续传?HTTP Range、206 与 416 实战
spring boot·后端·http
是main不是漫1 小时前
【C++——类和对象(上)】筑基篇:以封装奠定面向对象之基
c语言·开发语言·c++
量化分析码农1 小时前
股票实时行情接口返回字段说明:单次请求的时间字段与数值类型
后端