Go语言基础代码实例与解析
1.变量声明
解析:
"var e float64"创建一个名为e的双精度(float64)型浮点数变量,值为0 "f:=float32(e)"将e取单精度并赋值给变量f(可能导致精度缺失)
需要注意的是,此处":="是声明操作符,作用是创建并初始化,其中":"是类型转换操作符。替换该语句,需要先声明f变量,再用"f=float32(e)"赋值。
2.if-else
解析:
句法结构与c语言类似
注意格式,else if与if的反括弧同行
3.循环(Go语言中只有for循环一种循环)
解析:
for后不加条件表示死循环
for后的三个条件可以任意省略
4.切片(slice)
解析:
切片的大小不限,取值操作与数组相同,赋值时使用append
"copy(c,s)"意为把s切片copy到c
5.map
解析:
"m:=make(map[string]int)" 用make创建一个名为m的map,其中key的类型是string,value的类型是int,每一组key与value之间有":"连接
"r,ok:=m["unknown"]" 用于检查map中有没有key为unknown的元素,r被赋值为其value,ok为bool值检查其存在性
map完全无序
6.range
range遍历slice和map更简洁,遍历时会返回索引(key)和对应位置的值(value),如不需要索引则用下划线代替。例如在第17行中,k为key,v为value。
7.函数
解析:
golang中变量类型后置!
8.结构体
解析:
使用结构体修改指针能避免拷贝大结构体的开销
9.错误处理
解析:
函数会return两个值,没有错误时return原始值和nil,有错误时return nil 和 error
10.json处理
对已有结构体,只要是公开字段(每一个字段的首字母为大写,如"Name"),就可以用jason.marshaler把整个结构体变成一个jason字符串
相反,序列化后的jason字符串也可以通过jason.unmarshaler逆序列化,存放在一个空变量内
11.时间处理
解析:
time.Date可以创建一个新的时区与相应时间 .Sub可以对两个时间相减得到时差 .Format可以直接用一个特定字符串对时间格式化,若要替换字符串,则需要用time.Parse .Unix获取时间戳
12.进程信息
os.Args 获取命令和参数
os.Getenv/Setenv 获取或写入环境变量
exec.Command 快速启动子进程并获取输入输出