The way go to go 的十三章总结

错误处理与测试
相对于Java的try/catch
Go自己有一套 defer-panic-and-recover机制
相对于java,Go对于错误的处理:
1) 不会从底层抛异常到更高层(太耗费资源)
2)通过在函数和方法中返回错误对象作为它们的唯一或最后一个返回值——如果返回 nil

错误处理
错误值是用来表示异常状态
也可以自定义错误状态,fmt.Printf会自动调用String()方法所以可以打印出来。
注意 你自己的错误信息不要大写字母开头
如果想返回包含错误参数的信息,可以使用fmt.Errorf()来实现–>可以实现从命令行读取输入,然后利用这些输入做出一个错误反应。

运行时异常和panic
1)Go运行时会触发运行时panic
2)panic也可以直接从代码初始化(意味着这里的错误十分严重)
3)多层嵌套的话,会交还控制权,注意每层的defer(panicking)
4)不能随意使用panic中止程序

从panic中恢复
内建函数:recover用于恢复
但是recover只能在defer修饰的函数中使用(想一想也是正常的 发生了错误 defer函数才是唯一确定一定会执行的,所以恢复函数要放在这里面)
确实,defer-panic-recover在某种意义上就是像 if for这样的流程机制。注意顺序。

自定义包中的错误处理和panicking
准守2个原则:
1)在包内部,总是应该从panic中recover,不允许显性地超出包范围的panic
2) 向包的调用者传递错误值
*注意:*在深层次的嵌套调用时,将panic转成error来告诉调用方为何出错,提高了代码的可读性。

一种用闭包处理错误的模式
注意: 这种模式只有所有的函数都是一种签名的时候可以用(例如 web应用)
Go语言下,多态和错误检查及恢复的结合。

启动外部命令和程序
os包中的startProcess和exec.Command都可以用作启动或调用外部系统命令和二进制可执行文件。

Go中的单元测试和基准测试
注意: 测试数据需要包括:正常的用例,反面用例和便捷检查用例。

性能调试:分析并优化Go程序
这一节主要讲述了分析代码性能的小工具
蛮有意思的。
第三项(pprof调试):
调用最频繁的函数;
函数调用链
很有意思并且也是提高的一个方向。
在引用15中。

Java转Go语言 -12相关推荐

  1. 学完java学swift_前言最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C、Java或其他语言实现的,几乎没有使用Swift实...

    前言 最近学完Swift之后一直没有机会实战,发现由于Swift发展历史原因,目前网上大部分的算法都是使用C.Java或其他语言实现的,几乎没有使用Swift实现的,所以自己打算使用Swift去实现一 ...

  2. mysql解释器_atitit.java解析sql语言解析器解释器的实现

    atitit.java解析sql语言解析器解释器的实现 1. 解析sql的本质:实现一个4gl dsl编程语言的编译器 1 2. 解析sql的主要的流程,词法分析,而后进行语法分析,语义分析,构建sq ...

  3. Java语言程序设计 上机实验2 掌握Java的基本语言成分和流程控制语句。 掌握Java中数组的使用,理解引用数据类型。 掌握String类的使用。...

      Java语言程序设计 上机实验2 实验目的: 掌握Java的基本语言成分和流程控制语句. 掌握Java中数组的使用,理解引用数据类型. 掌握String类的使用. 实验内容: 注:标(*)为选做内 ...

  4. Groovy – Java的脚本语言

    Groovy – Java的脚本语言 by Mark Volkmann, Partner Object Computing, Inc. (OCI) 翻译:raxy 介绍 Groovy是用Java实现的 ...

  5. java程序设计 c语言_C语言和Java编程有什么区别?

    C语言和Java编程有什么区别?Java从根本上说是c之后的一种改进语言,纯面向对象的一种编程语言(当然比起Ruby还是差一点),有了C语言的基础固然对学习Java有帮助,因为在某种程度上Java和C ...

  6. Java与C语言中的锁

    Java与C语言中的锁 C 嵌入式汇编的语法格式是: asm(code : output operand list : input operand list : clobber list) __asm ...

  7. Python同Java同Js语言语法区别之四判断字符串列表字典是否相等

    字符串列表字典是否相等 前言 Python 字符串or数字 列表 字典 总结 Java 字符串 数组 Map 总结 JS 字符串 数组 对象 总结 前言 作为一枚测开工程师,需要的技能是全栈的,项目中 ...

  8. java毕业设计C语言程序设计》在线自学习系统Mybatis+系统+数据库+调试部署

    java毕业设计C语言程序设计>在线自学习系统Mybatis+系统+数据库+调试部署 java毕业设计C语言程序设计>在线自学习系统Mybatis+系统+数据库+调试部署 本源码技术栈: ...

  9. java 全局变量_Java语言与C语言、C++语言有何差异以及优劣势

    差异 熟悉C语言和C++语言的读者一定想搞清楚这个问题,实际上,Java确实是从C语言和C++语言继承了许多成分,甚至可以将Java看成是类C语言发展和衍生的产物.比如Java语言的变量声明.操作符的 ...

最新文章

  1. 深度学习的多个loss如何平衡?
  2. 摩托罗拉能否追回逝去的那些年?
  3. Gitlab的CI/CD初尝试
  4. php显示类别名,如何在single.php中仅显示父类别名称? (wordpress)
  5. Natasha 4.0 探索之路系列(一) 概况
  6. 阿里高工流生 | 云原生时代的 DevOps 之道
  7. 人生第一个过万 Star 的 GitHub 项目诞生
  8. 设计模式之GOF23责任链模式
  9. 【php写日志】php将日志写入文件
  10. python智慧树视频爬取_python爬虫利器之requests库的用法(超全面的爬取网页案例)...
  11. 基于机器视觉技术的表面缺陷检测技术综述
  12. Python爬虫工具
  13. php中根据数字月份返回月份的英文缩写
  14. cad批量选择相同块_cad怎么快速选择相同图形/块?
  15. from . import *
  16. 微型计算机怎样进行分类,微型计算机一般按什么进行分类
  17. 用HTML+CSS做成的一个简单网页(小兔鲜儿)
  18. C++初阶习题(牛客)【7】最小公倍数
  19. 杰理之升级复位可以选择软复位跳转和绝对地址跳转【篇】
  20. 小孩子mysql_mysql查询,救救孩子

热门文章

  1. 查找算法--01 顺序查找和二分查找
  2. c语言实现自动打开文件夹,c语言打开文件(c语言文件打开方式代码)
  3. 主流的B/S架构模式在软考教程里居然是被一笔带过的。
  4. equest和requestScope的区别
  5. UVA - 12325 Zombie's Treasure Chest 暴力
  6. Python中找出dataframe中的重复的行 DataFrame.duplicated()方法
  7. Android 离线人脸识别方案总结
  8. Matlab:isempty()函数用法
  9. PS简单操作快捷键,上手快
  10. 论坛发贴与跟贴的技巧