基础入门

  • 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下的安装

go语言中文社区

[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,查看版本,成功即为安装成功

go语言入门指南 go语言基础入门_go语言入门指南

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源码文件都需要放置在工作区,但是对于命令源码文件来说是一个例外,他不是必须存放在源码工作区。

go语言入门指南 go语言基础入门_go_02


- src目录用于存放源代码文件,以代码包为组织形式。

- pkg目录是用于存放归档文件(名称以.a为后缀的文件),所有归档文件都会被存放到该目录下的平台相关目录下,同样以代码包的形式存在。平台相关目录,还包含两个隐藏的go语言环境变量:GOOS(GO语言安装的操作系统)和GOARCH(go语言安装的计算架构)

- bin目录:用于存放当前工作区中的Go程序的可执行文件。

- 当环境变量GoBIN已经有效设置时,该目录变得没有意义

- 当GOPATH中的值包含多个工作区的路径时,必须设置GOBIN,否则无法成功安装GO程序的可执行文件。

go语言入门指南 go语言基础入门_go语言_03

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 代码包声明与代码包导入路径的区别

go语言入门指南 go语言基础入门_Go_04

6.4.5 代码包的导入

go语言入门指南 go语言基础入门_go语言_05

6.4.6 代码包导入方法

go语言入门指南 go语言基础入门_Go_06

go语言入门指南 go语言基础入门_Go_07

go语言入门指南 go语言基础入门_go_08

6.4.7 代码包初始化

代码包初始化函数即:无参数声明和结果声明的init函数。

go语言入门指南 go语言基础入门_go语言入门指南_09

go语言入门指南 go语言基础入门_go语言入门指南_10

go语言入门指南 go语言基础入门_go语言_11

go语言入门指南 go语言基础入门_go_12