Go 语言入门指南:基础语法|青训营

99 阅读2分钟

Go语言基础代码实例与解析

1.变量声明

image.png

解析:

"var e float64"创建一个名为e的双精度(float64)型浮点数变量,值为0 "f:=float32(e)"将e取单精度并赋值给变量f(可能导致精度缺失)

需要注意的是,此处":="是声明操作符,作用是创建并初始化,其中":"是类型转换操作符。替换该语句,需要先声明f变量,再用"f=float32(e)"赋值。

2.if-else

image (3).png

解析:

句法结构与c语言类似

注意格式,else if与if的反括弧同行

3.循环(Go语言中只有for循环一种循环)

image (4).png

解析:

for后不加条件表示死循环

for后的三个条件可以任意省略

4.切片(slice)

image (5).png

解析:

切片的大小不限,取值操作与数组相同,赋值时使用append

"copy(c,s)"意为把s切片copy到c

5.map

image (6).png

解析:

"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

image (7).png

range遍历slice和map更简洁,遍历时会返回索引(key)和对应位置的值(value),如不需要索引则用下划线代替。例如在第17行中,k为key,v为value。

7.函数

image (8).png

解析:

golang中变量类型后置!

8.结构体

image (9).png

解析:

使用结构体修改指针能避免拷贝大结构体的开销

9.错误处理

image (10).png

解析:

函数会return两个值,没有错误时return原始值和nil,有错误时return nil 和 error

10.json处理

image (11).png

对已有结构体,只要是公开字段(每一个字段的首字母为大写,如"Name"),就可以用jason.marshaler把整个结构体变成一个jason字符串

相反,序列化后的jason字符串也可以通过jason.unmarshaler逆序列化,存放在一个空变量内

11.时间处理

image (12).png

解析:

time.Date可以创建一个新的时区与相应时间 .Sub可以对两个时间相减得到时差 .Format可以直接用一个特定字符串对时间格式化,若要替换字符串,则需要用time.Parse .Unix获取时间戳

12.进程信息

image (13).png os.Args 获取命令和参数

os.Getenv/Setenv 获取或写入环境变量

exec.Command 快速启动子进程并获取输入输出