go 语法糖

ads

我是鹏超,众多互联网测开中的一个普通人,希望给大家分享一些对测开的认识和工作中遇到的问题,文笔一般,但绝对真诚,欢迎读者朋友留言交流~

hello,大家好!今天我们来聊聊go语言里面那些有趣的语法糖。语法糖是编程语言中提供的一些语法,这些语法对功能没有任何影响,但是更方便我们使用。像Java的泛型、自动拆装箱、jdk1.8中的双冒号等,都是语法糖的一种,那么类似的,我们来看下go提供的语法糖。


短变量声明


go语言中支持使用 := 来进行变量的声明和初始化同时进行。如:a := 0 (注意不能在函数外使用)。短变量声明语法糖使代码看起来更简洁,让人更关注于代码的功能实现,而非各种各样的变量类型。

当然,也有一定的坏处,那就是在新声明一个变量接收函数返回值的情况下,没法直接看出返回值的类型,总要点来点去。


for range


for i := 0; i < 100; i++ {}

想必很多人对这段代码都是深恶痛绝,麻烦又难看,关键是遍历操作是我们代码中不可能缺少的。对此,java就在jdk1.8中提供了流式编程,而go语言中就提供了for range的方式,让代码看起来更简洁,并且提供了三种友好的使用方式。

arr := []int{1, 2, 3}// 1、不关心遍历的次数和结果for range arr {}// 2、只关心遍历的次数,不关心结果 for i range arr {}// 3、既关心遍历的次数,又关心遍历的结果for i, j range arr {}

而且在go语言中,使用for range可以遍历map,对应的i和j分别是map的key和value(很关键!!!隔壁C++要馋哭了)。


ok idiom


go把从map中取数变成了多返回值模式,第一个值为map中对应的value,第二个值为map中是否存在该key(bool类型),这就是ok idiom。它可以让你在操作结果之前,先做不存在处理,大大避免了代码中的空指针。

需要注意的是,对于嵌套map,即使内层map没有初始化,也可以使用ok idiom来处理,不会引发panic,如:

arr := make(map[string]map[string]string)arr["a"] = map[string]string{"b": "c"}val, ok := arr["x"]["y"]

忽略


go的开发者大概是有强迫症,变量声明了就必须要使用,包导入也必须要显式用到,否则编译无法通过,这时候我们可以使用下划线来忽略一些没有用到的字段或者包。最典型的就是在遍历数组或者切片时,经常不关心角标,这时候我们就可以使用下划线来把for range中第一个参数忽略掉,如:

for _, val := range arr {}

还有个我经常犯错的一个情况:

package mainimport (    "database/sql"    _ "github.com/go-sql-driver/mysql")func main () {    dsn := "username:password@tcp(127.0.0.1:3306)/dbname"    db, err := sql.Open("mysql", dsn)    if err != nil {        panic("err!!!")    }}

连接mysql的时候要把驱动包导入进来,即使没有显式使用到,否则运行时会报错(本质是运行驱动包中的init函数)


总结


类似的语法糖还有很多,大家可以在工作和学习中不断了解,但是要注意的是,使用前记得看好“说明书”,不要用出问题哦!




最后编辑于:2024/1/15 拔丝英语网

admin-avatar

英语作文代写、国外视频下载

高质量学习资料分享

admin@buzzrecipe.com