Go全栈第1节:认识Go语言

2022/11/09

1、go语言发展史

时间线:

  • 2009年11月 go第一个版本发布
  • 2012年3月 go1.0发布

  • 2015年8月go1.5发布,这个版本被认为是历史性的,完全移除了C语言部分,使用go编译go,少量代码使用汇编实现,重新设计GC,支持并发GC,解决STW问题(stop the world),到go1.8时,相同业务场景下的GC时延迟已经可以从go1.1的数秒,控制在1ms以内,GC问题的解决,可以说go语言在服务端开发方面,几乎抹平了所有的弱点。

Go云项目,云时代

Docker, Kubernetes都是完全用go语言实现的,还有七牛云存储等等。

展望

Go语言是google在2009年发布的第二款编程语言,它是基于编译,垃圾收集和并发的编程语言,专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C/C++代码的速度,而且更加安全,支持并行进程,在云项目中,大部分都使用了Golang来开发。

很多人将Go称为21世纪的C语言,因为它拥有C的简洁和性能,而且还很好的提供了21世纪互联网环境下服务端开发的各种实用特性,

Go语言的设计哲学是:将简单、实用体现的淋漓尽致

我们认为,21世纪,Go会爆发。

2、使用Go语言的项目

举例:七牛云算是第一家选go语言做服务端的公司,早在2011年,它就选择Go作为存储服务端的主体语言

Go语言可以做什么

go语言的简单,高效,并发特性,适合:

  • 服务器编程,例如处理日志、数据打包,虚拟机处理,文件系统,分布式系统,
  • 网络编程,使用最广,web应用,api应用,go内置的net/http包基本上把我们常用的网络功能都实现了
  • 开发云平台,我们所熟悉的七牛云,华为云等都是使用go开发成型的产品
  • 区块链,有一种说法,Go语言作为区块链行业的开发语言,
  • 嵌入式开发

go语言将集合了java和c的优点,没有了java的臃肿

4、前景(Google、大厂:腾讯 C 客户端、web java (新需求:接口;Go)) 小企业:go 首选 ,越来越来. 运维、云原生(Go) B站-Go— 辅助(java) 20000 + 3000 Go

3、Go语言环境安装

云原生时代,Go语言或将成为新的主力开发语言

Windows

下载地址,go语言中文网:https://studygolang.com/dl

1、下载后直接安装

选择环境目录

2、安装完成后,执行命令查看版本

go version

3、配置环境变量,go还需要一个工作目录,即GOROOT(go的安装目录) 和 GOPATH(存储go项目的工作目录)

我的电脑->属性->环境变量

用户变量GOPATH要与系统变量GOPATH保持一致

4、GOPATH目录下需要新建src、bin、pkg三个目录

5、正常安装后,我们发现GO根目录下bin目录已经配置到系统化环境变量Path下了,就跟Java一样需要配置bin到Path,才可以在控制台识别go命令

6、go env命令查看生效的变量

Mac

一路傻瓜式安装后,安装包会默认安装在/usr/local目录下

2、设置GOROOT环境变量

在终端运行

vi ~/.bash_profile
export GOROOT=/usr/local/go
按esc,输入:wq 保存退出编辑

3、设置GOPATH环境变量

$HOME是每个电脑下的用户主目录,运行echo $HOME获取

$HOME目录下新建目录GoWorks,并新建新建src、bin、pkg三个子目录

vi ~/.bash_profile
export GOROOT=/usr/local/go
export GOPATH=$HOME/GoWorks
按esc,输入:wq 保存退出编辑

常用命令

go env # 查看环境变量
go get 地址 # 下载远程依赖
go list -m all # 查看项目使用的模块
go mod tidy # 清除未使用的依赖

4、开发工具GoLang安装

下载地址:https://www.jetbrains.com/go/download/download-thanks.html

Windows

点击download下载,然后直接傻瓜式安装

安装完后,启动goland

发现跟idea 很相似

1、new project

2、new file

Mac

安装后需要激活,网站:http://blog.idejihuo.com/

5、Hello World

Windows

1、创建hello.txt文件,把后缀改为go,

查看,勾选文件扩展名

2、使用记事本编辑hello.go文件

package main // 代表要打包成一个可执行的文件,一个程序里只能有一个main包
import "fmt"  // 导入一个系统包fmt用来输出

func main() {  // 程序入口
  fmt.Println("Hello world!")  // 打印hello world 字符串后换行
}

在Go语言里,命令为main的包具有特殊的含义,Go语言的编译程序会试图把这种名字的编译为二进制可执行文件,所有用Go语言编译的可执行程序都必须有一个名叫main的包,且仅有一个main包 。

编译器会在main包发现名为main()的函数,否则不会创建可执行文件,main()函数是程序的入口,没有这个函数程序就没有办法执行。

程序编译时,会声明main包的代码所在的目录的目录名作为二进制可执行文件的文件名。

在当前目录下,执行go run命令

3、在golang新建hello.go

调整文字大小,file->setting

执行hello.go报错

解决,设置go 环境变量GO111MODULE=off

go env -w GO111MODULE=off

再次执行

Post Directory