这是我参与「第五届青训营 」笔记创作活动的第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
标准库字符串工具函数:
字符串格式化:FMT包含很多字符串格式相关的方法, 如printf类似于c语言 %v 打印任意类型变量,%+v 加上打印变量名,%#v更详细
json处理:结构体每个字段首字母大写(公开字段),就可以用json.marshaler去序列化,变成一个json字符串
时间处理:
time包
数字解析:strconv包
进程信息:
os.Args获取程序执行时指定的命令行参数
os.Getenv获取环境变量
os.Setenv设置环境变量
exec.Command快速启动子进程获取输出