Go语言 Go程基础

news/2024/9/18 23:52:05/ 标签: golang, 开发语言, 后端

 本篇文章主要为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程。

示例如下:

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

运行结果:

这是主go程: 1======> 这是子go程: 1======> 这是子go程: 2
这是主go程: 2======> 这是子go程: 3
这是主go程: 3
这是主go程: 4======> 这是子go程: 4======> 这是子go程: 5
这是主go程: 5

匿名函数写法

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

示例如下:

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

启动多个子go进程

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

示例如下:

package mainimport ("fmt""time"
)// 这个将用于子go程使用
func displays(num int) {count := 1for {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 := 1for {fmt.Println("这是主go程:", count)count++time.Sleep(1 * time.Second)}
}

运行结果:

这是主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程基础内容介绍及代码示例。


http://www.ppmy.cn/news/1520614.html

相关文章

Windows安装docker,启动ollama运行open-webui使用AIGC大模型写周杰伦歌词

Windows安装docker&#xff0c;启动ollama运行open-webui使用AIGC大模型写周杰伦歌词 1、下载docker的Windows版本。 docker下载地址&#xff1a; https://docs.docker.com/desktop/install/windows-install/https://docs.docker.com/desktop/install/windows-install/ 2、设…

java基础知识-JVM知识详解

一、JVM内存结构 Java虚拟机(JVM)的内存结构主要分为几个不同的区域,每个区域都有其特定的目的和功能。以下是JVM内存结构的主要组成部分: 先看一下总体的结构图 程序计数器(Program Counter Register) 这是一个较小的内存块,用于存储当前线程所执行的字节码指令的地址…

tomato靶机通关攻略

主机发现 用kali去扫描端口&#xff0c;发现有3个开放端口 访问网站 在kali里面进行目录扫描&#xff0c;找到一个antibot_image 找到一个/antibot_image/ 目录&#xff0c;进而找到/antibots/目录 发现可能存在文件包含 页面通过image传参查看passwd文件 页面通过image传参查…

Linux 虚拟网络三大基石:Namespace、Veth pair 与 Bridge

引言 在 Linux 的世界里&#xff0c;虚拟网络技术是系统管理、云计算和容器化不可或缺的一部分。今天&#xff0c;我们将深入探讨构建这些虚拟网络的三大基石&#xff1a;Namespace、Veth 对和 Bridge&#xff0c;揭示它们如何在背后默默支撑起你的网络环境。 Namespace&…

区块链入门

1.1 区块链技术的发展 随着 2008 年比特币(Bitcoin) 的发明,一个被称为区块链(Blockchain) 的新概念进入了人们的视野,这项新技术据信有可能彻底改变整个社会。 区块链有望对每个行业产生颠覆的影响,包括但不限于 IT、金融、政府、媒体、医疗、法律和艺术等。一个流派将区…

速盾:防御ddos攻击的几大有效方法是什么?

DDoS攻击&#xff08;分布式拒绝服务攻击&#xff09;是一种恶意攻击手段&#xff0c;旨在通过向目标服务器发送大量的请求&#xff0c;使其无法正常响应正常用户的请求。这种攻击会耗尽服务器的带宽和资源&#xff0c;导致服务不可用。为了保护网络安全&#xff0c;防御DDoS攻…

线性代数 -- 矩阵求导

Tips&#xff1a;本文为理解神经网络的前置知识&#xff0c;整体内容并不全&#xff0c;相关内容还需后续进一步完善。 一、基础 1、标量、向量和矩阵 标量&#xff1a;只有大小&#xff0c;没有方向的量 向量&#xff08;欧几里得向量&#xff09;&#xff1a;具有大小和方向…

Redis Desktop Manager 0.8.8.384 安装与使用详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

深入解析多商户商城系统源码:如何开发直播商城小程序?

本篇文章&#xff0c;小编将深入解析多商户商城系统源码的关键技术&#xff0c;并详细探讨如何基于这些源码开发一个功能完善的直播商城小程序。 一、多商户商城系统源码的核心构架 多商户商城系统源码的核心在于其能够支持多个商户独立运营&#xff0c;但同时又在一个统一的平…

LoRA大模型微调的利器

LoRA模型是小型的Stable Diffusion模型&#xff0c;它们对checkpoint模型进行微小的调整。它们的体积通常是检查点模型的10到100分之一。因为体积小&#xff0c;效果好&#xff0c;所以lora模型的使用程度比较高。 这是一篇面向从未使用过LoRA模型的初学者的教程。你将了解LoR…

Linux/Ubuntu服务器 screen 安装与使用

一、screen简单介绍 在Linux系统中&#xff0c;screen是一个非常强大的终端仿真器&#xff0c;它允许用户在一个终端窗口中创建多个子窗口&#xff0c;每个子窗口都可以运行一个独立的会话。screen的主要特点包括&#xff1a; 会话分离&#xff1a;screen允许用户在终端会话中运…

linux安装oracle的详细教程

在Linux系统上安装Oracle数据库涉及多个步骤&#xff0c;从准备工作到安装和初步配置。下面是一个详细的安装教程&#xff0c;以Oracle Database 19c和Oracle Linux&#xff08;或类似的Red Hat/CentOS&#xff09;系统为例。 前提条件 确保系统满足Oracle数据库的硬件和软件要…

学习日志8.30--防火墙NAT

目录 一、实验环境配置 二、配置防火墙静态NAT一对一 三、配置防火墙静态NAT多对多 四、配置防火墙NAT端口转换NAPT 五、防火墙smart-nat、easyip 六、防火墙三元组NAT 在学习过基于路由器的NAT网络地址转换&#xff0c;现在学习基于防火墙NAT的网络地址转换&#xff0c;…

电脑里的文件删除了还能恢复吗?这些方法能帮你找回

在数字化时代&#xff0c;电脑已经成为我们日常生活和工作中不可或缺的工具。然而&#xff0c;随着我们在电脑上创建、编辑和保存的文件越来越多&#xff0c;误删文件的情况也时有发生。一旦发现自己不小心删除了重要文件&#xff0c;很多人都会惊慌失措&#xff0c;疑惑这些被…

深入理解Java 8中的Stream API及其应用

深入理解Java 8中的Stream API及其应用 随着Java 8的推出&#xff0c;Java语言引入了许多令人兴奋的新特性&#xff0c;其中最为引人注目的便是Stream API。Stream API 为我们提供了一种全新的集合操作方式&#xff0c;使得数据处理、转换和过滤变得更加简洁、高效。在本文中&…

收藏夹里的“小网站”被误报违规不让上怎么办?如何将Chrome和Edge安装到 D 盘(含用户数据),重装系统也不会丢失收藏夹和密码?

当你用国产浏览器访问网站的时候&#xff0c;有时候会显示这个&#xff1a; 如果确实是违规网站&#xff0c;不让访问也没什么&#xff0c;但是很多都是误报啊&#xff0c;你这样直接来个大红横幅&#xff0c;还让人活不&#xff1f; 那遇到这种误报应当怎么办呢&#xff1f;有…

新电脑Win11系统想要降级为Win10怎么操作?

前言 现在的电脑大部分都是Windows 11系统&#xff0c;组装机还好一些&#xff0c;如果想要使用Windows 10&#xff0c;只需要在安装系统的时候选择Windows 10镜像即可。 但是对于新笔记本、厂商的成品机、一体机来说&#xff0c;只要是全新的电脑&#xff0c;基本上都是Wind…

性能优化:自动化处理系统设计

性能优化&#xff1a;自动化处理系统设计 前言需求分析系统设计1. 调度中心2. 任务执行器3. 错误处理机制4. 通知系统5. 报表生成器6. 日志记录器 技术实现结语 前言 在当今这个信息爆炸、技术日新月异的时代&#xff0c;企业面临着前所未有的挑战和机遇。随着业务量的不断增长…

ArcGIS的8个“合并”功能要分清——矢量:编辑器合并,复制粘贴,工具合并、追加、联合——栅格:镶嵌、镶嵌至新栅

​​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 今天来看看ArcGIS中的几个涉及“合并”功能的用法。 对矢量&#xff1a; 包括编辑器中的合…

SprinBoot+Vue宠物领养救助微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…