记录精彩的程序人生

Day 1 - Go 语言学习 - 简介及安装配置

为什么要学习go语言

1. 硬件限制

基于摩尔定律,通过增加晶体管数量来提升单线程的性能和处理器频率越来越受限,为了解决这些问题,厂商开始向处理器增加内核数量,引入了超线程技术以及增加更多的缓存空间。但这些方案也有其自身的局限性,硬件上突破太难,所以就需要go语言这样能提高性能的软件语言。

2. go语言为并发而生

大多数现代编程语言(如Java,Python等)都来自90年代的单线程环境,实现多核资源使用需要耗费大量时间精力。而go语言从底层原生支持多核,无须第三方库、开发者的编程技巧和编程经验就可以实现。

3. go语言性能强悍

相比解释型语言,go是编译型语言,处理器直接运行的是二进制文件,执行效率更高,性能更好。

4. go语言简单易学

go虽然是编译型语言,但语法简单,更偏向于解释型语言。代码风格统一,开发效率高。

go语言应用前景

1. 云原生

web应用的发展过程:
单体应用-----微服务-----服务网格(多语言) ---- 云原生(serverless) - 多语言
微服务是后续服务的起点
容器是服务网格开始发展的基石

2. 运维

go语言本身没有python更适合运维,但是docker和k8s的出现使得go在运维开发中越来越流行。

3. 中间件

etcd:k/v存储,得益于k8s
tidb:TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适OLAP 场景的混合数据库。
consul:服务注册和服务发现
jaeger: 链路追踪
nsq: 消息队列
influxdb: 时序数据库 
prometheus:监控和警报系统

4. 区块链

go语言由于先天的并发优势在高并发场景中得天独厚,像以太坊、fabric等区块链应用均是由go语言开发的。

go语言安装与配置

1. go语言安装下载

由于go语言是由谷歌开发,资源使用的谷歌的服务器,而国内对于访问谷歌有些困难,因此推荐使用国内镜像来下载安装:https://studygolang.com/dl

2. go语言配置

Go 1.13 及以上(推荐)

打开你的终端并执行

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
完成。

macOS 或 Linux

打开你的终端并执行

$ export GO111MODULE=on
$ export GOPROXY=https://goproxy.cn
或者

$ echo "export GO111MODULE=on" >> ~/.profile
$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
$ source ~/.profile
完成。

Windows

打开你的 PowerShell 并执行

C:\> $env:GO111MODULE = "on"
C:\> $env:GOPROXY = "https://goproxy.cn"
请成为永远疯狂永远浪漫永远清澈的存在。

留下你的脚步