当前位置: 首页 > news >正文

GO语言开篇

1、GO语言历史背景

Go语言起源于Google,经过Google开发团队多年的设计和开发,于2009年正式对外发布。Go语言的设计理念包括简洁高效、高并发支持和安全稳定。它旨在简化编程任务,提高开发效率。Go语言内置goroutine和channel实现高效的并发编程,同时提供垃圾回收机制确保内存安全。Go语言迅速吸引了全球开发者的关注,成为了著名编程语言排行榜TIOBE的年度最佳编程语言。

详细经过可参考以下博客:

Go 语言的前生今世与介绍 - 贾维斯Echo - 博客园

以下是Go语言的吉祥物,类似于linux的企鹅。

值得一提的是,Go语言的开发者之一是当年开发C语言的大佬。

2、GO语言运用场景

博主认为如果您是和博主一样将Go语言作为娱乐知识的您不必了解Go语言的运用场景,只需要去学习Go语言中的一些思想,如果您是希望学习Go语言来就业,还是要明确好目标的。

2.1 云计算与微服务

  • 特点:原生支持高并发(goroutine + channel)、轻量级、适合分布式系统。

  • 典型应用

    • 微服务架构:如Uber、腾讯、字节跳动等用Go构建微服务。

    • 云原生工具:Docker(容器化)、Kubernetes(容器编排)、Prometheus(监控)等核心项目均用Go开发。

    • 服务网格:Istio、Linkerd的部分组件。


2.2 网络编程与API开发

  • 特点:标准库强大(net/http)、高性能、低延迟。

  • 典型应用

    • Web后端:高频API服务(如支付、社交平台),框架如Gin、Echo。

    • 网关/代理:Traefik(反向代理)、Envoy的Go扩展。

    • RPC服务:gRPC(Google开源的高性能RPC框架)的Go实现。


2.3 分布式系统与中间件

  • 特点:跨平台、低资源消耗、易部署。

  • 典型应用

    • 数据库与存储:Etcd(键值存储)、CockroachDB(分布式SQL)、InfluxDB(时序数据库)。

    • 消息队列:NSQ、Sarama(Kafka客户端库)。


2.4 命令行工具(CLI)

  • 特点:编译为单二进制文件、无依赖、启动快。

  • 典型工具

    • DevOps工具:Terraform(基础设施即代码)、Github CLI。

    • 开发工具:k6(性能测试)、Cobra(CLI框架)。


2.5 区块链与加密货币

  • 特点:高性能、安全性强。

  • 典型项目

    • 公链:Hyperledger Fabric(企业级区块链框架)。

    • 节点实现:以太坊的Go实现(Geth)。


2.6 实时系统与流处理

  • 特点:goroutine适合处理实时数据流。

  • 典型应用

    • 聊天服务器(如Slack的部分后端)。

    • 实时数据分析管道(如日志处理)。


2.7 嵌入式与边缘计算

  • 特点:内存占用小、跨平台(如Raspberry Pi)。

  • 典型场景

    • IoT设备的数据采集与转发。

    • 边缘网关(如华为的KubeEdge边缘计算框架)。


2.8 网络安全工具

  • 特点:静态编译、难以逆向。

  • 典型工具

    • 渗透测试工具:GoPhish(钓鱼测试)、Nuclei(漏洞扫描)。

    • 代理工具:Shadowsocks的Go实现。


不适合的场景

  • GUI开发:缺乏成熟的桌面UI框架。

  • 低延迟实时系统:如高频交易(GC可能导致延迟)。

  • 复杂算法/科学计算:生态不如Python/R丰富。


为什么选择Go?

  • 开发效率:语法简洁,编译速度快。

  • 性能平衡:接近C++/Java,但开发更高效。

  • 并发模型:goroutine比线程更轻量(KB级栈,动态扩展)。

Go尤其适合需要高并发、易维护、快速迭代的云时代应用,是云计算和微服务领域的首选语言之一。

可参考以下网址:

Go适合做什么?为何这么多人偏爱Go语言?-CSDN博客

Go应用场景与适应项目 - 知乎

3、GO语言下载,环境安装

3.1 编译环境下载

进入以下网站进行文件下载:

Download and install - The Go Programming Language

以下根据自己的操作系统和所需要的版本选择下载,博主下载的是很多年前的版本,因为博主是跟着网上的尚硅谷网课学习的,如果您也是跟着网课学习的,希望您也下载过去的版本,这样子在学习的时候可以避开很多的坑,反正工作需要的话就和同事的环境保持一致即可。

下载完成之后直接将压缩包解压,无需setup。

进入到解压之后的文件夹中,打开bin文件,其中的go.exe文件就可以进行go语言编译。但是此时的编译功能只能在当前目录下使用,所以我们需要配置系统环境变量。

验证

此时打开cmd命令行,到bin目录下运行go version命令,可以查看到当前安装的go语言编译器版本。

注意:此时在其他的文件夹下使用go命令是无法识别的。所以还要进行之后的操作。

3.2 系统环境变量配置

首先在桌面右键之后点击个性化,或者是其他方式打开电脑设置界面,之后直接搜索环境,打开"编辑系统环境变量"

先点击1"环境变量设置",之后的操作都在2"系统变量"中新建或者是编辑。

1、GOROOT

该系统环境变量名中存放的变量值为解压缩的go语言编译器文件夹。

2、path

系统默认该变量名下有很多的路径,我们需要新建一个路径,新建的路径中写bin目录所在路径,网上大部分的教程这里使用相对路径,如果您的环境下出现错误,就使用绝对路径吧。

3、GOPATH

在电脑中新建一个文件夹用于存放将来的Go语言工程,然后将该文件夹的路径放在中国变量名下。

验证

这里一定要记得先关闭cmd,然后再次重新打开cmd。

然后在任意的目录下使用目录go version,您可以看到可正常显示go语言的版本,那么此时你的环境已经安装完成了。

4、GO语言编译方法

博主图方便直接在vscode中打开terminal进行编译。

4.1 编译

go run -file

实例:

go run hello.go

该命令是将编译和运行一起进行了,所以花费的时间会稍微长一点。

4.2 先编译再运行

先编译:go build -file

实例:go build hello.go

运行:./-file

实例:./hello

指定生成运行文件的名称,必须以.exe结尾,不然的话不能运行。

go build -o -Target file -file

实例:go build -o hello1.exe hello.go

5、GO语言特性及注意事项

Go语言是一种动态性语言,弱语言,类似于python。其将include更换为import,一个文件作为一个包(package),和python的模块是一个概念。

1、Go语言文件必须以.go结尾。否则编译报错。

2、Go语言的执行入口函数是main。

3、Go语言区分大小写。

4、Go语言有不用加分号,编译器会自动加。当然加了分号也是没事的,就是比较累赘。

5、Go语言一行是一个语句,一行不能写两个语句。

6. Go语言要求import的内容、定义的变量必须被引用,否则会报错。(该功能是为了让开发者强制删除一些没有被使用的内容,从而提高代码的性能)

未使用包:

未使用变量:

http://www.dtcms.com/a/98302.html

相关文章:

  • Rust基础语法
  • c++-函数增强
  • JVM介绍
  • 《DeepSeek+Office办公套件使用课程》
  • MSTP+VRRP三层架构综合实验
  • ABAP FPM
  • 污水处理厂人员定位方案-UWB免布线高精度定位
  • 2025“钉耙编程”中国大学生算法设计春季联赛(4)题解
  • 华为交换综合实验——VRRP、MSTP、Eth-trunk、NAT、DHCP等技术应用
  • 如何使用K8S快速部署测试环境
  • 蓝桥刷题note11(好数)
  • 【湖北工业大学2025年ACM校赛(同步赛)】题解
  • 【数据结构】[特殊字符] 并查集优化全解:从链式退化到近O(1)的性能飞跃 | 路径压缩与合并策略深度实战
  • Windows catime 番茄时钟-v1.0.5-开源简洁的 Windows 倒计时工具,支持番茄时钟功能
  • Enhanced PEC-YOLO:电力施工场景安全装备检测的轻量化算法解析
  • 树莓派超全系列文档--(12)如何使用raspi-config工具其一
  • 处理 Linux 信号:进程控制与异常管理的核心
  • JSP(实验):带验证码的用户登录
  • JavaScript基础知识初步掌握
  • 【免费】2007-2019年各省地方财政文化体育与传媒支出数据
  • 19839 Dijkstra求最短路1
  • kettle从入门到精通 第九十三课 ETL之kettle kettle 调用web service接口5种方法,一文彻底搞懂
  • c++学习系列----005.c++模板(类模板)
  • 人工智能在自然语言处理中的应用:从理论到实践的探索
  • 在一个scss文件中定义变量,在另一个scss文件中使用
  • 【Linux】——文件(上)
  • 缓存使用纪要
  • mcp 接freecad画齿轮
  • 《Python Web网站部署应知应会》No4:基于Flask的调用AI大模型的高性能博客网站的设计思路和实战(上)
  • 阅读分析Linux0.11 /boot/bootsect.s