GoLang(Linux/Old)
安装GO
- 官网下载最新版本的GoLang https://go.dev/learn/
- 解压到文件夹,设置环境变量
- 我使用的是ZSH,所以需要修改.zshrc文件,添加export PATH=$PATH:/home/arecuid/soft/go/bin
安装完成
简介
Go的表达能力强、简洁、干净、高效。它的并发机制使其能够轻松地编写程序,从而最大限度地利用多核和网络机器,而其新颖的类型系统能够实现灵活和模块化的程序构建。Go可以快速编译成机器代码,但又具有垃圾收集的便利性和运行时反射的力量。它是一种快速、静态类型化的编译语言,感觉就像动态类型化的解释语言。
结构
通常会设置一个GOPATH,所有的项目代码都放在GOPATH的src目录下
在GOPATH目录下创建三个文件夹
- bin:用于存放编译后生成的可执行文件
- pkg:用于存放编译后生成的归档文件
- src:用于存放源码文件
在进行Go
语言开发的时候,我们的代码总是会保存在GOPATH/src
目录下。在工程经过go build
、go install
或go get
等指令后,会将下载的第三方包源代码文件放在GOPATH/src
目录下, 产生的二进制可执行文件放在 GOPATH/bin
目录下,生成的中间缓存文件会被保存在 GOPATH/pkg
下。
如果我们使用版本管理工具(Version Control System
,VCS
。常用如Git
)来管理我们的项目代码时,我们只需要添加GOPATH/src
目录的源代码即可。bin
和 pkg
目录的内容无需版本控制。
目前流行的项目结构
Go语言中也是通过包来组织代码文件,我们可以引用别人的包也可以发布自己的包,但是为了防止不同包的项目名冲突,我们通常使用顶级域名来作为包名的前缀,这样就不担心项目名冲突的问题了。
因为不是每个个人开发者都拥有自己的顶级域名,所以目前流行的方式是使用个人的github用户名来区分不同的包。
举个例子:张三和李四都有一个名叫studygo的项目,那么这两个包的路径就会是:
import "github.com/zhangsan/studygo" |
和
import "github.com/lisi/studygo" |
以后我们从github
上下载别人包的时候,如:
go get github.com/jmoiron/sqlx |
那么,这个包会下载到我们本地GOPATH
目录下的src/github.com/jmoiron/sqlx
。
Hello World
在src目录下创建一个hello目录,在hello目录下创建一个hello.go文件
编写代码
package main //声明 main 包,表示当前是一个可执行程序 |
运行 go run .
结果
Hello World! |
可以通过 go build 生成 hello 可执行的二进制文件。不过通过go build生成的文件只能在当前目录下使用
此时在通过 go install 生成可移动的可执行二进制文件
GO语言的优点
- 自带GC(垃圾回收)
- 静态编译,编译好后,扔服务器直接运行。
- 简单的思想,没有继承,多态,类等。
- 丰富的库和详细的开发文档。
- 语法层支持并发,和拥有同步并发的channel类型,使并发开发变得非常方便。
- 简洁的语法,提高开发效率,同时提高代码的阅读性和可维护性。
- 超级简单的交叉编译,仅需更改环境变量
GO语言的特征
1.自动立即回收。 |
Go语言命名
- Go的函数、变量、常量、自定义类型、包
(package)
的命名方式遵循以下规则- 首字符可以是任意的Unicode字符或者下划线
- 剩余字符可以是Unicode字符、下划线、数字
- 字符长度不限
- Go只有25个关键字
- Go还有37个保留字
- 可见性
- 声明在函数内部,是函数的本地值,类似private
- 声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect
- 声明在函数外部且首字母大写是所有包可见的全局值,类似public
25 个关键字
37个保留字
Go语言声明:
var(声明变量), const(声明常量), type(声明类型) ,func(声明函数)。 |