# GO基础学习 | 青训营笔记

36 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第1天

1.GO语言环境搭建

下载go安装包->go开发环境(vscode安装GO插件)->简单测试

2.go入门

特点:高性能、高并发;语法简单;拥有自动垃圾回收;一个包系统;函数作为一等公民;词法作用域、系统调用接口、只读的UTF8字符串等。

比较:Python性能问题;C++不适合web业务;部署简单;RPC和HTTP框架推广

基础语法: package main 程序接口包 improt 导入标准库包 FMT:输入输出字符串,格式化字符串

go run xxx.go :运行 go build xxx.go :编译成二进制文件

变量: 强类型语言,字符串内置(加号拼接,等号比较) 变量声明: var name = xxx (自动推导变量类型,可以name后加变量类型) name := xxx

常量:go语言常量没有确定类型,根据上下文确定 声明:const name (type) = xxx

if else:if后面不用加“()”

循环:只有for循环,什么都不写就是死循环

switch 分支:可以使用任意变量类型,也可以不适用变量,不需要加break

数组:var a[5] int (很少使用)

切片:任意更改长度
make(string[],3) 创建切片 append(s,"a") 增加元素

map:随机顺序 map[value]key

range:类似于Python,实现快速遍历

函数:函数类型后置,支持返回多个值(第一个为返回结果,第二个为错误信息)

指针:需要对传入参数进行修改时,新参写成指针,调用的时候加“&”

结构体:结构体方法,类似于类成员函数

错误处理:返回值类型里面加一个error,函数出现错误就会返回error

标准库字符串工具函数: image.png

字符串格式化:FMT包含很多字符串格式相关的方法, 如printf类似于c语言 %v 打印任意类型变量,%+v 加上打印变量名,%#v更详细

json处理:结构体每个字段首字母大写(公开字段),就可以用json.marshaler去序列化,变成一个json字符串

时间处理: time包 image.png

数字解析:strconv包

image.png

进程信息: os.Args获取程序执行时指定的命令行参数 os.Getenv获取环境变量 os.Setenv设置环境变量 exec.Command快速启动子进程获取输出 image.png