go json 去掉空的返回值_Go语言基础规范

本文介绍了Go语言编程的一些最佳实践,包括代码风格、版本管理和标准库使用。在处理json时,强调了如何避免空值返回。文章还涵盖了循环、遍历、切片、map的使用,函数技巧如可变参数、多返回值,以及闭包、资源管理(defer)、内置函数。此外,讲解了结构体、方法、接口、并发(goroutine与channel)以及网络通信和单元测试的基础知识。
摘要由CSDN通过智能技术生成

1、代码风格统一 使用goland编辑器,进行Reformat Code,字段使用驼峰命名法

2、Go语言版本使用1.13.4以上,使用go modules进行依赖管理

3、学会经常使用Golang标准库文档,地址:https://studygolang.com/pkgdoc

4、无限循环 - for {循环体语句}

5、for range遍历数组、切片、字符串、map 及通道(channel)

切片部分如下:

6、判断切片是否为空,请始终使用len(s) == 0来判断,而不应该使用s == nil来判断,示例如下:

var s1 []int //len(s1)=0;cap(s1)=0;s1==nil
s2 := []int{} //len(s2)=0;cap(s2)=0;s2!=nil
s3 := make([]int, 0) //len(s3)=0;cap(s3)=0;s3!=nil

7、通过var声明的零值切片可以在append()函数直接使用,无需初始化

8、使用copy()函数复制切片,指向不同的内存地址

9、从切片中删除元素

删除索引为index的元素,操作方法是a = append(a[:index], a[index+1:]...)

map部分如下:

10、判断map中键是否存在,格式:value, ok := map[key]

函数部分如下:

11、可变参数通过在参数名后加...来标识,例如:func intSum3(x int, y ...int) int {}

注意:可变参数通常要作为函数的最后一个参数

12、多返回值,有多个返回值时必须用()将所有返回值包裹起来

13、如果局部变量和全局变量重名,优先访问局部变量

14、语句块定义的变量,通常我们会在if条件判断、for循环、switch语句上使用定义变量的方式,只在语句块中生效

15、使用type关键字来定义一个函数类型,type calculation func(int, int) int,凡是满足这个条件的函数都是calculation类型的函数

16、高阶函数分为 - 函数作为参数和函数作为返回值两部分

17、闭包=函数+引用环境,例如如下:

func adder() func(int) int {
var x int
return func(y int) int {
x += y
return x
}
}

var f = adder()
fmt.Println(f(10)) //10
fmt.Println(f(20)) //30
变量f是一个函数并且它引用了其外部作用域中的x变量,此时f就是一个闭包。 在f的生命周期内,变量x也一直有效

18、defer语句能非常方便的处理资源释放问题。比如:资源清理、文件关闭、解锁及记录时间等

19、return语句在底层并不是原子操作,它分为给返回值赋值和RET指令两步。而defer语句执行的时机就在返回值赋值操作后,RET指令执行前,具体如下图所示:

280da5109b8e648a570fd5d79ef700aa.png

20、常用内置函数

close 主要用来关闭channel
len 用来求长度,比如string、array、slice、map、ch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值