go语言编程小tips
2024-08-29 17:32:41
go语言一个比较方便的特性是你不需要显示的定义一个变量.例如,在c语言中,你想要使用一个int型变量,那么代码如下
int i; i =0; i++;
而在go语言中,
i := 0; i++
这样你可以在"="前加上一个":",表示这个等号前面的是一个新的变量.那么这种隐式的变量声明有可能会导致严重的难以查找的bug.
样例代码如下:
func foo(bb int) {
var aa int
aa = 1
if bb > 0 {
aa, err := foo2(bb)
if err != nil {
//handle error
}
}
foo3(aa)
}
在这个代码片段中,foo2是一个拥有两个返回值的函数,第一个是一个int,第二个是error.我们习惯性的写下下面这句代码
aa, err := foo2(bb)
这会导致if语句块内的aa覆盖了外面的aa,导致foo3函数得不到真正的aa的值.
这种错误很不起眼,但是一旦写出来,非常难以排查,因此在语句块内对于"="和":="的使用要格外小心.
最新文章
- 一键批量添加材质的法线贴图-unity插件
- openmp 的使用
- 《C#高级编程》之委托学习笔记 (转载)
- WPF 异步加载高清大图
- [转]NullPointerException异常
- 【BZOJ 1758】【WC 2010】重建计划 分数规划+点分治+单调队列
- ckfinder的配置使用
- android service 学习
- 04-树5 Root of AVL Tree
- Java Concurrency - 浅析 Phaser 的用法
- 超大文件上传到Azure Linux虚拟机最佳实践
- JAVA 创建TXT文件,写入文件内容,读取文件内容
- 移动web开发资源大整合
- linux_定时任务
- 芝麻HTTP:Appium的安装
- 听《津津乐道》ThinkPad专题节目有感
- MySQL四种隔离级别和MVCC
- Spring boot Mybatis 整合
- JSONObject 的使用学习
- 回归JavaScript基础(六)
热门文章
- 前端模块加载规范AMD与CMD小记
- Vitamio 视频播放
- Bzoj2165 大楼
- [LeetCode] Evaluate Reverse Polish Notation stack 栈
- 【Tomcat】Tomcat下设置项目为默认项目
- centos dhcp获取不到ip解决方法 Bringing up interface eth0: Device eth0 does not seem to be present,delaying initialization.
- JS日历控件集合----附效果图、源代码
- libyuv编译(各平台)【转】
- hdu 5108(数论-整数分解)
- 处理下最近的file_id小写问题