Go语言开发小技巧易错点100例(七)
往期回顾:
- Go语言开发小技巧&易错点100例(一)
- Go语言开发小技巧&易错点100例(二)
- Go语言开发小技巧&易错点100例(三)
- Go语言开发小技巧&易错点100例(四)
- Go语言开发小技巧&易错点100例(五)
- Go语言开发小技巧&易错点100例(六)
本期看点(技巧类用【技】表示,易错点用【易】表示):
- 优雅的关闭Go程序【技】
- 指针声明后未赋值前不能直接操作【易】
正文开始:
优雅的关闭Go程序【技】
在实际的开发中你可能会遇到这样的问题,程序异常终止但自己却浑然不知,程序关闭前消息队列还有部分未消费等等,所以程序不能异常终止,我们可以选择更加优雅的方式进行程序的关闭,话不多说直接上代码:
func main() {defer func() {fmt.Println("defer func ...")}()fmt.Println("main func ...")ch := make(chan os.Signal, 1)signal.Notify(ch, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGINT)sig := <-chfmt.Printf("get signal %+v ...\n", sig)
}
大家可以先猜猜看这个main函数的执行顺序,没错,只会输出main func ...
但是在按Ctrl+C或关闭程序时就会输出如下:
因此大家就可以将程序退出前想要执行的函数放在defer函数中或者放在<-ch后,已达到在程序终止前执行一些必要的程序。
指针声明后未赋值前不能直接操作【易】
Go语言中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。传递数据使用指针,而无须拷贝数据。关于值传递和引用传递大家可以参考我的这篇文章:《细说值传递、引用传递和地址传递》。
Go语言中的指针操作非常简单:&(取地址)和*(根据地址取值)。我们在声明一个指针时可以有两种方式:
var stu *Student
stu := &Student{}
代码实例:
type Student struct {Name string
}func main() {var stu Studentfmt.Println(stu.Name)var stuP *StudentstuP = &Student{} //如不进行赋值则会报错fmt.Println(stuP.Name)
}
如果不进行赋值IDE则会进行提示:
发生空指针异常:
所以大家平时要注意指针变量的使用哈。
本期到此结束~
Go语言开发小技巧易错点100例(七)相关推荐
- 嵌入式C语言优化小技巧
嵌入式C语言优化小技巧 1 概述 嵌入式系统是指完成一种或几种特定功能的计算机系统,具有自动化程度高,响应速度快等优点,目前已广泛应用于消费电子,工业控制等领域.嵌入式系统受其使用的硬件以及运行环境的 ...
- 摘《阿里巴巴JAVA开发手册》易错题目
Apsara Clouder基础技能认证:阿里巴巴编码规范 摘<阿里巴巴JAVA开发手册>的小部分易错题目 下面的例子代码和描述,哪些是不正确的: [ABD] A. 单行字符数限制不超过1 ...
- 27个iOS开发小技巧
<span style="word-wrap: normal; word-break: normal; line-height: 1.5em; font-size: 14px; out ...
- 日常安排php,PHP日常开发小技巧
PHP日常开发小技巧 导语:PHP语言中,如果你懂得一些开发技巧,那么对你学PHP,会有很大的帮助.下面的是百分网小编为大家整理的PHP日常开发小技巧,希望对你能有所帮助. PHP批量取得checkb ...
- Silverlight 游戏开发小技巧:动感小菜单2
Silverlight 游戏开发小技巧:动感小菜单2 动感小菜单其实是想模仿Apple的菜单按钮设计制作,但是画虎不成反类犬,看起来有点别扭,昨天各位园友提了这方面的建议,感觉太硬如果加入动画可能更好 ...
- Silve“.NET研究”rlight 游戏开发小技巧:传说中的透视跑马灯
昨夜元宵佳节,各种灯会热闹非凡,伴随烟火灿烂好不热闹,可惜一点也没看着T_T,那就写一个跑马灯吧,可是跑马灯并不稀奇,各位高手们已经写过而且都各有特点,所以,写也要写点有特色的才好,游戏中经常能看到一 ...
- 一起谈.NET技术,Silverlight 游戏开发小技巧:动感小菜单
网页应用受限于自身的浏览器范畴,不能把华丽效果完全展示,正是因为如此,在网页上诞生了无数绚丽的设计,虽然动感程度和桌面应用无法比拟,但是在UI上却下足了功夫,用户体验可以说无以伦比,比如说小小的菜单, ...
- Silverlight 游戏开发小技巧:轨迹跟随效果
Silverlight 游戏开发小技巧:轨迹跟随效果 我们通常在游戏中有各种各样的粒子效果,其中有一种就是跟随鼠标发生的轨迹动画,在鼠标经过的地方会产生一些特效,这种方式我们在粒子当中经常使用,本篇使 ...
- Delphi三层开发小技巧:TClientDataSet的Delta妙用
Delphi三层开发小技巧:TClientDataSet的Delta妙用 Delphi做三层开发时,很多人都会在客户端放一个TClientDataSet,中间层远程数据模块就对应放一个TDataSet ...
最新文章
- XML简单的增改删操作
- threadlocal使用场景_深入剖析ThreadLocal
- Jquery操作下拉列表和复选框,自定义下拉
- Qt 原理-MOC(1)Meta Object Compiler
- 初学计算几何(四)——初识凸包
- 【微信小程序】二维码跳转规则的前缀匹配是什么意思?
- 按一行一行的方法将一个文本文件复制到另一个文件中_命令行技巧:分割文件内容...
- YBTOJ:卖猪问题(网络流)
- java支持闭包_JAVA 需要引入闭包吗
- TCP/IP参考模型和五层参考模型
- cs231n 作业环境搭建
- android 自定义 对号,超简单实现Android自定义Toast
- Detecting Causality in Complex Ecosystems(检测复杂生态系统中的因果关系)
- 遗传算法python与matlab_遗传算法之Python实现代码
- Code Craft(编程匠艺)之代码的生命(一)
- 【入门讲解】Python使用OpenCV设置图片尺寸。
- Android自定义守望先锋loading学习
- 可以储存照片的字段类型是_在数据库中可用来存储图片的字段对象是哪种类型的字段?...
- APK获取包名的办法
- 【随机过程】第二版龚光鲁译课后习题4.5参考答案