非零基础自学Golang 第1章 走进Go 1.1 Go编程语言概述 1.1.2 Go 语言特性及应用场景

news2024/11/20 15:36:24

非零基础自学Golang

文章目录

      • 非零基础自学Golang
      • 第1章 走进Go
        • 1.1 Go编程语言概述
          • 1.1.2 Go 语言特性及应用场景

第1章 走进Go

1.1 Go编程语言概述

1.1.2 Go 语言特性及应用场景

随着人工智能、大数据和云计算时代的到来,Python、Java和PHP等编程语言风靡盛行,C/C++等编程语言也有自己的特性和应用场景,

那么作为后起之秀的Go语言究竟有哪些特性和优势?这些特性又适用于哪些应用场景呢?

【云原生时代,必须掌握 Go】

【Go语言特性】

  1. 容易上手

    Go语言上手非常容易,许多零基础的初学者在学习大约一周【好家伙】的时间后就可以使用Go语言完成一些既定的任务。

    在这里插入图片描述

    而C/C++等语言,则需要经过几个月的时间学习才开始上手,并且学习中的大量时间都用于避免语法错误和调试代码bug。

    在这里插入图片描述

  2. 编译速度快

    在这里插入图片描述

    在Go编程语言的1.7版本更新中,通过减少编译器所使用的内存量、减少链接时间来减少总的编译时间。根据测试,这项改进和Go1.5.3相比减少了20%~30%的总编译时间。

    另外,Go语言工程结构简单,没有头文件和不允许包的交叉编译等规则,这也在很大程度上减少了编译所需的时间。

  3. 原生支持并发

    Go语言最主要的特性就是从语言层面原生支持并发,无须任何第三方库。

    Go的并发基于goroutine,可以理解为一种微线程。

    goroutine 是 Go语言中的轻量级线程实现,由 Go 运行时(runtime)管理。Go 程序会智能地将 goroutine 中的任务合理地分配给每个 CPU。

    Go 程序从 main 包的 main() 函数开始,在程序启动时,Go 程序就会为 main() 函数创建一个默认的 goroutine。

    在这里插入图片描述

    与Python的多线程性能限制于GIL全局锁不同,Go语言的并发可以充分利用CPU的资源,将goroutine合理地分配到每个CPU中,最大限度地使用CPU的性能。goroutine之间的通信可以使用Go语言的sync包和channel机制来实现。

  4. 垃圾回收

    一直以来,内存管理是程序员开发中的一大难题。传统的编程语言C/C++中,程序员必须对内存进行细致的管理操作,控制内存的申请及释放,否则就可能产生内存泄漏问题。
    为了解决这个问题,Go语言实现了自己的垃圾回收器,在1.3版本前采用传统的Mark and Sweep算法。Go语言在1.5的版本更新中进行了较大改进,使用了三色标记算法,进一步改善了垃圾回收的机制,

    在这里插入图片描述

    使程序员更加专注于业务本身,不用把过多的精力投入到垃圾回收中。

  5. 代码风格清晰

    Go语言语法在C语言的基础上进行优化,去掉了表达式和for循环中冗余的括号,强制统一了代码风格,如Go语言中,左括号必须紧接着语句不进行换行。【牛逼】

    有些开发者,特别是有其他编程语言开发经验的人,刚开始时会对这个特性感到不习惯,但随着对Go语言的不断深入熟悉,就会发现这个特性能让代码阅读者将更多精力投放到代码本身,而不是代码风格上去。

【Go 语言主要应用 】

由于以上特性,Go语言主要应用于以下三个方面:(1)服务端开发;(2)高并发处理;(3)网络编程。

基于以上三个方面,Go语言可以具体用于服务端网络请求接收和解析、分布式系统开发、后端API接口开发和虚拟机处理等。

【好!】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/81795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

35岁孩子妈,2年时间彻底从互联网转型到新行业,再也不担心年龄歧视!

有人35岁被裁,有人却35岁转型重生,一切都在自己的一念之间。一位35岁的孩子妈说:来了个彻底转型,一切从头开始,用两年时间从互联网转到新行业,现在步入正轨,再也不用担心年龄歧视,因…

UNIPRO NL协议详解

UFS协议系列文章目录 UNIPRO系列文章传送门: UNIPRO TL协议详解UNIPRO DL协议详解之整体概述UNIPRO DL协议详解之流控机制UNIPRO DL协议详解之重传机制 MPHY系列文章传送门:文章目录 UFS协议系列文章目录说明一、概述二、SAP与数据包说明 写这篇文章的目的是分享我在阅读Un…

谷粒学院——Day11【首页数据显示和添加Redis缓存】

❤ 作者主页:Java技术一点通的博客 ❀ 个人介绍:大家好,我是Java技术一点通!( ̄▽ ̄)~* 🍊 记得关注、点赞、收藏、评论⭐️⭐️⭐️ 📣 认真学习,共同进步!&am…

MongoDB

1、windows启动和部署 1.1、打开官网--4.0.12版本 1.2、下载完直接解压到文件夹 1.3、打开方式 1.3.1、命令行方式打开(windows常用) 在当前文件下新建data文件夹,在其下面在新建一个data文件夹 打开bin目录,进入cmd窗口。指定…

微服务框架 SpringCloud微服务架构 微服务保护 32 隔离和降级 32.6 熔断策略【异常比例、异常数】

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 微服务保护 文章目录微服务框架微服务保护32 隔离和降级32.6 熔断策略【异常比例、异常数】32.6.1 熔断策略【异常比例、异常数】32.6.2 案例…

教你如何购买服务器部署自己的项目

📚目录🍑购买服务器🥞1.登录服务器🚀2.配置服务器的环境2.1.jdk安装2.1.1上传软件至服务器2.1.2 解压jdk2.1.3 配置环境变量2.2.tomcat安装2.2.1上传软件至服务器2.2.2 解压tomcat2.2.3 运行tomcat2.2.4 配置服务器端口号2.2.5 访…

关于mac上的所有东西都变小了

记录一下我的那些时光:2022.12.11 今天晚上本应该是我快快乐乐与手机相伴的时间,奈何,下午的时候遇到一个bug,于是乎,改了一下午,眼看着就要把晚上也赔进去了,我赶紧找人帮忙,改bug…

黑芝麻智能杨宇欣:自动驾驶已从产业培育期过渡到快速增长期

“我们认为,现在(自动驾驶)从产业培育期,到了产业爆发、快速增长的时期”,11月29日,在黑芝麻智能上海媒体技术开放日上,公司首席市场营销官杨宇欣称。 他进一步称,2025年的国内自动驾…

彻底理解synchronized

彻底理解synchronized 1. synchronized简介 在学习知识前&#xff0c;我们先来看一个现象&#xff1a; public class SynchronizedDemo implements Runnable {private static int count 0; ​public static void main(String[] args) {for (int i 0; i < 10; i) {Threa…

CSC7136D

CSC7136D是一款高效率低待机功耗原边反馈小功率电源AC/DC驱动电路&#xff0c;无需光耦、TL431及相关器件。CSC7136D采用开关频率调制和初级电流峰值振幅&#xff08;FM和AM&#xff09;多模式工作技术&#xff0c;保证了全负载和线性范围内的较高的转换效率。恒压模式下的线缆…

Redis -- 缓存穿透和雪崩

文章目录一、缓存穿透1.1 概念1.2 解决方案1.3 布隆过滤器的工作原理二、缓存击穿2.1 概念2.2 解决方案三、缓存雪崩3.1 概念3.2 解决方案用户的数据一般是存储于数据库&#xff0c;数据库的数据是落在磁盘上的&#xff0c;磁盘的读写速度可以说是计算机里最慢的硬件了。当用户…

新手小白入门必看教程,js中的迭代器和生成器到底是什么

内容预警&#xff0c;低级内容&#xff0c;菜鸟必看&#xff0c;大佬请绕道 在学习es6的新语法的时候&#xff0c;我相信不管你买什么书&#xff0c;里面一定有很长很长的章节在介绍【迭代器和生成器】&#xff0c;新手对于这两个名词真的非常陌生&#xff0c;即便看过所有的章…

Grafana监控大屏配置参数介绍(一)

Grafana 系列文章&#xff0c;版本&#xff1a;OOS v9.3.1 Grafana 的介绍和安装 在上篇文章中&#xff0c;我们已经安装了Grafana&#xff0c;并且看到了它的初步面貌。在这篇文章&#xff0c;我们以一个简单的大屏为例&#xff0c;来了解Grafana的大屏配置参数。 创建第一个…

TeXstudio配置

目录&#xff1a;TeXstudio配置一、前言二、下载和安装 TeXstudio三、下载和安装 TeXlive四、配置 TeXstudio五、测试一、前言 众所周知&#xff0c;TeX Live 自带的编辑器 TeXworks 是越更新 bug 越多&#xff0c;作为新手上路的工具刚刚好&#xff0c;但是对于有比较强的使用…

【圣诞节特辑】会呼吸的玫瑰爱心代码 -李峋爱心续 动画演示思路 代码开源 一起浪漫吧

源码下载地址&#xff1a;会呼吸、带有玫瑰花的爱心告白程序-Java文档类资源-CSDN下载 粉丝可直接私信我领取。 前言 之前有部电视剧《点燃我温暖你》没火&#xff0c;但是其中李峋的爱心代码却在程序圈超级火&#xff0c;这圣诞节快到了了&#xff0c;给大家来一波爱心代码…

非零基础自学Golang 第1章 走进Go 1.2 Go语言官方文档 1.3 学好Go 的建议

非零基础自学Golang 文章目录非零基础自学Golang第1章 走进Go1.2 Go语言官方文档1.3 学好Go 的建议1.3.1 了解语言特性及自身需求1.3.2 动手写代码1.3.3 参与项目1.3.4 阅读英文文档第1章 走进Go 1.2 Go语言官方文档 Go语言官方文档网址&#xff1a;https://go.dev/doc/。 官…

系统迁移的重点步骤及注意事项

在实际项目中会有迁移合并正在使用中的环境的需求&#xff0c;本文将以把B环境迁移合并到A环境为例&#xff0c;介绍如何迁移合并两个环境。 迁移前准备工作如下&#xff1a; 防止迁移过程中出现不可控的错误&#xff0c;迁移之前请备份目标环境default数据源库确保两个环境的…

GCSE英语语言考试-虚构小说考试问题和答案案例​

Analysing Fiction - Question and extract 虚构小说分析--问题和摘要 The extracts your exam questions are based on might be longer than the one here but you should still be able to write a close analysis. First of all, have a read, and see what ideas you can …

[附源码]Python计算机毕业设计大学生运动员健康管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

27-Vue之ECharts-通用配置

ECharts-通用配置前言标题提示框工具按钮图例完整代码前言 本篇来学习下ECharts图表中的通用配置 标题 title&#xff1a;标题 title: {text: "分数", // 标题文字textStyle: {color: red // 文字颜色},borderWidth: 2, // 标题边框宽度borderColor: blue, // 标…