Golang
Overview
- 谷歌推出的,开源的,静态强类型,编译型语言。
- 语法与C相近,但具有Java的垃圾回收功能。
- 对并发支持较好,适合搭载web服务器。
- 可以说支持面向对象,也可以说不支持面向对象
特性
- 自动垃圾回收
- 函数多返回值
- 错误处理
- 匿名函数,闭包
- 类型和接口
- 并发编程
- 反射
环境配置
可以使用go env查看
-
GOROOT
Golang的安装路径,安装完后,默认存在
-
GOPATH
1. 表示Go语言的工作区 2. 存在三个目录 - bin:存放可执行文件 - pkg:存放编译好的库文件 - src:存放go的源文件 3. 可以是一个目录的路径,也可以是多个目录的路径
Struct
-
vendor文件夹
管理包依赖的方式,将外部依赖,复制到vender目录下,这样在go build时,优先从vender目录寻找。
go mod
1.11版本推出的新功能,module,全新的依赖管理。
使用go module可以在任意位置新建项目
- 常用命令
-
download
下载模块到本地缓存,具体可以通过命令go env查看,其中环境变量GOCACHE就是缓存的地址,如果该文件夹的内容太大,可以通过命令go clean -cache
-
edit
- 从工具或脚本中编辑go.mod文件
-
graph
- 打印模块需求图
-
init
- 在当前目录下初始化新的模块
-
tidy
- 添加缺失的模块以及移除无用的模块
-
verify
- 验证依赖项是否达到预期的目的
-
why
- 解释为什么需要包或模块
-
Feature
-
结构体:
1. 结构体是由一系列相同类型或不同类型的数据构成的集合。 2. 与C结构体类似,与Java中的类很像 3. 命名规则: type "结构体名" struct { member definition member definition ... }
-
& 和 *:
1. &,取地址符,生成一个指向其操作数的指针(有值) 2. *,生成一个指针,指向某类型(无值)
-
传参类型
1. 只有值传递(副本拷贝) 2. 可以使用“指针”,进行引用传递
-
处理JSON
1. Marshal:将数据编码成JSON(类似js的stringify()) 2. Unmarshal:将JSON字符串解码到相应结构
-
return
1. 退出函数(函数无返回值)
2. 返回声明的变量
3. 指定返回值