基础入门
- 1.go语言(一些基本概念)
- 2.Go语言的优势
- 3.go在Linux下的安装
- 4.编写第一个go代码
- 5.linux下的设置
- 6.如此简介安装背后的故事
- 6.1 工作区
- 6.2 GOPATH
- 6.3 源码文件的分类和含义
- 6.4 代码包相关知识
- 6.4.1 代码包的作用
- 6.4.2 代码包的规则
- 6.4.3 代码包的声明
- 6.4.4 代码包声明与代码包导入路径的区别
- 6.4.5 代码包的导入
- 6.4.6 代码包导入方法
- 6.4.7 代码包初始化
1.go语言(一些基本概念)
- 一个在语言层面实现了并发机制的类C通用型编程语言。特点:并发、错误处理机制好、简洁高效的面向对象表达、非侵入式接口、可扩展(Cgo)。
- 初识并发:并发是指程序的逻辑结构;并行是指程序的运行状态,并行依赖硬件支持。并发是并行的必要条件,但并发不是并行的充分条件。并发只是更符合现实问题本质的表达,目的是简化代码逻辑,而不是使程序运行更快,要是程序运行更快必定是 并发程序+多核运行。 (充分条件:条件A可以推出结论B,但是结论B推不出A。必要条件:结论B可以推出A,但是A推不出B)。go的并发单位goroutine。
- 错误机制:(defer,有事没事defer一下例如defer file.close()),内置error类型,go资源释放(defer file.Close)
- 面向对象(oop)表达:结构体(struct),首字母大写是public方法,首字母小写是private方法。匿名字段方法实现多重继承。
- 非侵入式接口(interface):
- 可扩展(Cgo):与C可以进行交互
- 模块化:
- 基本类型:bool,数字类型(有符号/无符号,有长度/无长度),string(内建"UTF-8"支持),array(数组类型),slice(切片类型),map(映射类型),chan,error。go是强类型。
2.Go语言的优势
- 1.GO语言特点
a.静态类型,编译型的开源语言
b.脚本化的语法,支持多种编程范式,如函数式或者面向对象
c.原生支持并发编程
2.优势
a.脚本化语法 b.静态类型+编译型,运行速度加快 c.原生支持并发
3.go在Linux下的安装
[root@opsys-vm12-231 go]# wget https://studygolang.com/dl/golang/go1.16.5.linux-amd64.tar.gz
[root@opsys-vm12-231 go]# tar -C /usr/local -xzf go1.16.5.linux-amd64.tar.gz
[root@opsys-vm12-231 go]# go version ##将解压后的go脚本文件写入.bash_profile中,然后source,查看版本,成功即为安装成功
4.编写第一个go代码
[root@opsys-vm12-231 ~]# cd go/
[root@opsys-vm12-231 go]# vim hello.go
[root@opsys-vm12-231 go]# cat hello.go
package main
import "fmt"
func main(){
fmt.Println("hello world!")
}
[root@opsys-vm12-231 go]# go run hello.go ##运行命令
hello world!
5.linux下的设置
有四个环境变量需要设置:GOBIN、GOROOT、GOPATH、PATH需要设置到某一个配置文件中(.bash_profile、/etc/profile)
GOROOT(GO语言的安装目录 ):例如:export GOROOT=/usr/local/go
GOPATH(GO语言工作区即工作目录集合):例如:export GOPATH=~/golib: ~/goproject
GOBIN是存放go程序的可执行文件的目录,例如:export GOBIN=~/gobin
PATH是为了为了方便使用Go语言命令和go程序的可执行文件,需要追加其值。例如:export PATH=$PATH:/usr/local/go/bin
6.如此简介安装背后的故事
6.1 工作区
工作区是放置Go源码文件的目录
一般情况下,Go源码文件都需要放置在工作区,但是对于命令源码文件来说是一个例外,他不是必须存放在源码工作区。
- src目录用于存放源代码文件,以代码包为组织形式。
- pkg目录是用于存放归档文件(名称以.a为后缀的文件),所有归档文件都会被存放到该目录下的平台相关目录下,同样以代码包的形式存在。平台相关目录,还包含两个隐藏的go语言环境变量:GOOS(GO语言安装的操作系统)和GOARCH(go语言安装的计算架构)
- bin目录:用于存放当前工作区中的Go程序的可执行文件。
- 当环境变量GoBIN已经有效设置时,该目录变得没有意义
- 当GOPATH中的值包含多个工作区的路径时,必须设置GOBIN,否则无法成功安装GO程序的可执行文件。
6.2 GOPATH
6.3 源码文件的分类和含义
- 分三类:命令源码文件、库源码文件、(前两种都有一定功能)测试源码文件(辅助源码文件)
- 命令源码文件:声明自己属于main代码包、包含无参数声明和结果声明的main函数。被安装后,相应的可执行文件会被存放到GOBIN 指向的目录或者<当前工作目录>/bin下。命令源码文件相当于GO程序的入口,但不建议把程序都写在一个文件中。注:同一个代码包中,不建议直接包含多个命令源代码文件
- 库源码文件,不具备命令源码文件的那两个特征的源码文件,被安装后,相应的归档文件会被存放到<当前工作区目录>/pkg/<平台相关目录下>
- 测试源码文件,不具备命令源码文件的那两个特征的源码文件,但是名称后缀特殊_test.go为后缀。
6.4 代码包相关知识
6.4.1 代码包的作用
编辑和归档Go程序的最基本单位。是代码划分,集结和依赖的有效组织形式,也是权限控制的辅助手段。
6.4.2 代码包的规则
一个代码包实际上就是一个由导入路径代表的目录。
导入路径即<工作区目录>/src或<工作区目录>/pkg/<平台相关目录>之下的某段子路径
6.4.3 代码包的声明
每一个源码文件都必须声明其所属的代码包,同一个代码包中的所有源码文件声明的代码包应该是相同的。
6.4.4 代码包声明与代码包导入路径的区别
6.4.5 代码包的导入
6.4.6 代码包导入方法
6.4.7 代码包初始化
代码包初始化函数即:无参数声明和结果声明的init函数。