当前位置:网站首页>Go 语言快速入门指南: 介绍及安装
Go 语言快速入门指南: 介绍及安装
2022-08-03 11:31:00 【程序员小乔】
1. 前言
时至今日,如果你想当一名程序员,入门学习编程。你有众多的开发语言可以选择,从 Tiobe 编程语言趋势版可以看到,比较流行的有:Python、C、C++、Java、C#、JavaScript、SQL、Swift...
做选择从来不是容易的事情,所以你可能会问,我该学哪一门语言?
在我们问自己该学哪一门语言之前,不如再往前追问一句:为啥会有这么多语言?
其实,每一门语言被设计出来都是有原因的,都是为了解决不同的问题,取决与你想做什么(移动开发、后端开发、前端开发、桌面应用、游戏开发...)。
甚至在为了方便自己更好的工作,你可能会学习一门或多门语言。

都 2021 年了,如果你还在纠结学哪门语言开始入门,那么,我会推荐 Go 语言。
2. 为什么选Go语言
话说在 2007 年的一个云淡风轻的下午,谷歌的三位工程师(Robert Griesemer、Rob Pike和Ken Thompson)由于对其内部的各种系统(主要使用 C++ 语言构建)和工具感到沮丧,产生了从头开始重新设计一门新的编程语言的想法。这三位大佬觉得这门语言应该是用来解决其他语言的弊端,同时保留其有用且优秀的功能。
Go来自于一个相当令人印象深刻的团队。肯-汤普森(Unix和C语言的设计者和创造者),罗伯-派克(UTF-8和Unix格式的共同创造者),以及罗伯特-格里瑟默(谷歌工程师)。如果想看看
Go的前世今生,可以看看 "Go at Google:软件工程服务中的语言设计",这篇文章讨论了 Go 最初是如何为解决 Google 的问题而构思的。
所以 Go 被设计出来:
使用静态类型,拥有 C 语言的运行时效率
具备 Python 和 JavaScript 等语言的可读性和实用性
在网络和多处理方面表现出卓越的性能
为云时代而生,为大规模多线程和并发性而设计的精简的语言
专门设计用于构建快速、可扩展的应用程序。
2008 年初,Unix 之父 Ken Thompson 实现了第一版 Go 编译器,用于验证之前的设计。这个编译器先将 Go 代码转换为 C 代码,再由 C 编译器编译成二进制文件。
到 2008 年中旬,Go 的第一版设计基本结束了。这时,同样在谷歌工作的 Ian Lance Taylor 给 Go 语言的三位作者发了一封电子邮件。他宣称为 Go 语言实现了一个 gcc 的前端,这也是 Go 语言的第二个编译器。
2009 年,谷歌正式开源了 Go 语言,也是目前发展迅速的编程语言之一。
截至目前,众多大公司在使用这门语言,这要归功于云计算和微服务的激增。 Google、Uber、Dropbox、Alibaba、Riot Games、Tencent、ByteDance...
3. Go 安装
听到这,你是否很想在你的电脑上进行 Go 语言编程。所以 Let's Go~
安装 Go 的最简单方法是进入官网下载安装包。该网站会自动检测你所使用的操作系统并显示你应该下载的 Go 的安装程序:

如果上面的网站访问不了的话,推荐选择 Go 语言中文网进行下载,点此处进入如下下载界面 :

当前最新的 Go 版本是1.18.4版本:
MAC :https://studygolang.com/dl/golang/go1.18.4.darwin-amd64.pkg
Linux:https://studygolang.com/dl/golang/go1.18.4.linux-amd64.tar.gz
Windows:https://studygolang.com/dl/golang/go1.18.4.windows-amd64.msi
下载完 Go 安装程序后,双击安装程序,开始直接的安装过程。建议直接使用默认的安装设置,不需要改变任何这些设置。直到安装完成。
4. Go 版本
使用 go version命令,查看 Go 是否安装成功:
$ go version
go version go1.18.4 linux/amd64
5. Hello World 程序
首先创建一个存放 Go源代码的文件夹:
$ mkdir -p GoProjects/Go/src/
创建 Hello.go 文件
$ cd ~/GoProjects/Go/src/
$ touch hello.go
使用文本编辑器打开 hello.go 文件,编辑第一个程序内容,点击保存
package main
import "fmt"
func main() {
fmt.Println("Hello World")
}
如图所示:

保存完后运行,命令为: go run hello.go ,就能看到输出 Hello World 显示在屏幕了。
$ go run hello.go
Hello World
Go 包括:可执行程序和库程序。
可执行程序: 我们可以直接从命令行运行。(Windows 一般为 .exe 后缀的文件,Linux一般不带后缀)。在Linux中,我们可以使用 go build 命令生成可执行程序 hello,然后运行这个程序,同样也能在控制台中打印出 Hello World 。
$ go build hello.go
$ ls
hello hello.go
$ ./hello
Hello World
库: 代码的集合,把所有的代码打包放到一块,方便我们能够在其他代码中使用。
现在,让我们来解释一下 Hello.go 程序:

package main 是我们第一行的程序,每一个 Go 程序必须由一个 package 声明,各种各样的包是Go 程序组织和复用代码的方式。
import "fmt" : import 关键字 能从其他的 packages 引入代码为我所用 fmt 包其实是英文 format 的缩写,顾名思义,这个包实现了输入和输出的格式化。
func main() { } : 函数块 有输入、输出和一系列逐步执行的语句。func 定义了一个函数块,后面是函数名,所以这个函数叫 main 函数,”()“内可以包括零个或多个参数,括号后可以有返回类型。”{}“是个函数体。本例中的函数没有参数,也没有返回值,只有一个打印语句。
fmt.Println("Hello World") : 该声明由三个部分组成。 首先,我们访问 fmt 包中的另一个函数 Println(即 fmt.Println 部分,**Println** 表示打印行)。 然后我们创建一个包含 Hello World 的新字符串,并以该字符串作为第一个也是唯一的参数调用(也称为调用或执行)该函数。
总结起来就是:创建一个新的可执行程序,该程序引用 fmt 库并包含一个名为 main 的函数。 该函数不接受任何参数,不返回任何内容,并执行以下操作:访问 fmt 包中包含的 Println 函数并使用一个参数调用它 - 字符串 Hello World
6. 总结
本篇文章首先介绍了 Go 语言的一些来龙去脉、 Go 语言的特点与优点,紧接着说明了 Go 的安装方法,并开始编写了第一个 Hello World 程序。
这可以说是快速入门的第一步,知道了 Go 是咋回事。
下一篇我们继续探索 Go 语言更多知识。敬请期待!
知识星球
星球地址:https://t.zsxq.com/03MJM7YfI
关注公众号「程序员小乔」

边栏推荐
- 最牛逼的集群监控系统,它始终位列第一!
- Polymorphism in detail (simple implementation to buy tickets system simulation, covering/weight definition, principle of polymorphism, virtual table)
- Generate interface documentation online
- 【MySQL功法】第2话 · 数据库与数据表的基本操作
- [论文阅读] (23)恶意代码作者溯源(去匿名化)经典论文阅读:二进制和源代码对比
- 数据库一席谈:打造开源的数据生态,支撑产业数字化浪潮
- 字节最爱问的智力题,你会几道?
- 性能优化|从ping延时看CPU电源管理
- CADEditorX ActiveX 14.1.X
- Traceback (most recent call last): File
猜你喜欢
【一起学Rust】Rust的Hello Rust详细解析

Summary of redis basics - data types (strings, lists, sets, hashes, sets)

The effects of the background and the Activiti

面试官:SOA 和微服务的区别?这回终于搞清楚了!

记住用户名案例(js)

Binary search tree (search binary tree) simulation implementation (there is a recursive version)

LeetCode-48. 旋转图像

Analysis of the idea of the complete knapsack problem

Simple implementation of a high-performance clone of Redis using .NET (1)

Skills required to be a good architect: How to draw a system architecture that everyone will love?What's the secret?Come and open this article to see it!...
随机推荐
LeetCode刷题笔记:622.设计循环队列
[论文阅读] (23)恶意代码作者溯源(去匿名化)经典论文阅读:二进制和源代码对比
C#/VB.NET 从PDF中提取表格
The way of programmer architecture practice: how to design a sustainable evolution system architecture?
字符串本地化和消息字典(二)
SmobilerService 推送实现
RTP协议分析
Lease recovery system based on PHP7.2+MySQL5.7
【MySQL功法】第4话 · 和kiko一起探索MySQL中的运算符
ERC20通证标准是什么?
[Wrong title] Circuit maintenance
基于PHP7.2+MySQL5.7的回收租凭系统
C - 为什么指针常常初始化为 NULL?
html+css+php+mysql实现注册+登录+修改密码(附完整代码)
深度学习:文本CNN-textcnn
【HCIP持续更新】STP协议相关保护机制
后台图库上传功能
redis基础知识总结——数据类型(字符串,列表,集合,哈希,集合)
Machines need tokens more than people
Babbitt | Metaverse daily must-read: Players leave, platforms are shut down, and the digital collection market is gradually cooling down. Where is the future of the industry?...