Go语言基础温习| 青训营笔记

58 阅读2分钟

青训营 x Go语言基础

其实,平时自己也一直用Go,基础语法问题不大,但是也把这次机会当成认真复习的一遍的机会,系统地过一遍。

Why Go

极为简单的并发编程(基于协程)、完善的标准库、完善的工具链、静态链接、快速编译、跨平台(开发/运行)、垃圾回收等等。

其实只从工作的角度出发,Go的选择可能不如Java丰富,大部分岗位都是大厂的,但是个人角度来看Go优美的语法和让人满意的效率让我难以割舍。

基础语法

其实有其他语言基础的同学转go的成本是相当低的,语法简单本身就是go的优势,从笔记里在复述一遍意义也不大。这里就记录一些个人觉得比较重要的语法点。

判断

if 条件表达式 {
    ...
} else if 条件表达式 {
    ...
} else {
    ...
}

go的条件判断语法 if/else/else if后面必须跟着大括号,不能省略,也不能在一行里写判断和执行内容,这点是很多刚转go的同学容易犯的错误。

循环

go中没有诸如whiledo while这样的循环,只有for循环。

for {
    死循环
}

for i := 0; i < n; i++ {
    i循环
}

for 条件表达式 {
    类似其他语言中while的循环
}

break跳出本层循环,continue跳过本次本层循环

JSON处理

借助encoding/json包,可以很轻松的在go中将结构体完成JSON序列化和反序列化,注意保证接口体中字段名首字母大写(如果需要在输出时改变字段名,则在结构体相应的字段后面加入`json:"输出要求"`)。

数字解析

Go中的字符串和数字间的转换是借助strconv库。

strconv.ParseFloatstrconv.ParseInt可以将字符串转为数字,这两个函数可以指定参数来进行转换。而较为简单的相互转换可以借助strconv.Atoi(字符串转数字)和strconv.Itoa(数字转字符串来进行)

defer

go中的一个独特语法,用于延迟执行,在之后的语句执行完之后再执行defer。当存在多个defer时,遵循后入先出的规则,类似栈的形式。

常用于处理一些需要关闭的资源。

小结

Go的语法十分简洁,但是为了保证风格一致性,具有很多严格的限制,比如要求代码内不能用未调用/使用的包引用和变量,否则不能通过编译。在使用go进行编程时一定要注意这些要求,这也是过渡到go时经常会犯的错误,一定要注意!


坚持学习,日日进步!