从PHP 到Golang 的笔记 ( 转 )

———文章来源 YamiOdymel/PHP-to-Golang PHP和模块之间的关系令人感到烦躁,假设你要读取 yaml 档案,你需要有一个 yaml 的模块,为此,你还需要将其编译然后将编译后的模块摆放至指定位置,之后换了一台伺服器你还要重新编译,这点到现在还是没有改善;顺带一提之后出了PHP 7效能确实提升了许多(比Python 3快了些),但PHP仍令我感到臃肿,我觉得是时候 (转行)了。 PHP 和Golang 的效能我想毋庸置疑是后者比较快(而且是以倍数来算),也许有的人会认为两种不应该被放在一起比较,但Golang 本身就是偏向Web 开发的,所以这也是为什么我考虑转用Golang 的原因,起初我的考虑有几个:Node.js 和Rust 还有最终被选定的Golang;先谈谈Node.js 吧。 Node.js的效能可以说是快上PHP 3.5倍至6倍左右

Golang Defer 必会知识点

在Golang语言中,defer关键字的运用极为频繁,它在开发过程中的重要性不容忽视,同时也是面试中常被考查的点。接下来,我们通过具体案例来探讨defer的使用与特性。### 1. defer的作用在Golang中,defer与面向对象语言中的析构函数相比,功能更为强大。它不仅用于资源释放、错误捕获,还能修改函数返回值。一个典型的例子是,当执行`tx.Commit()`后,即使后续调用了`tx.Rollback()`,事务也已提交,不会受到影响。### 2. defer的作用域defer的作用域局限于当前函数或方法的执行过程,在函数或方法返回之前被调用。这意谓着它不遵循代码块的作用域规则,而是确保在函数或方法执行完毕前执行。### 3. defer的执行顺序Golang中,defer遵循栈(stack)的执行顺序,即后进先出(LIFO)。这意味着在函数生命周期内,优先执行最新的defer语句

golang什么场景下用init()函数?

在学习Golang函数时,了解函数的用法和特性是提高开发效率的关键。以下是对Golang函数的一些记录。函数是代码复用的重要手段,调用经过充分测试且长期使用的函数可以降低代码的Bug率。函数的声明格式为:函数名(参数1,参数2, ...) 返回值类型。在函数参数的声明中,如果形参类型相同,可以省略部分类型声明。例如,可以使用一个类型声明来表示多个同类型参数。变长函数允许在函数定义的最后添加...Type,这样函数可以接受任意数量的同类型参数。函数支持多值返回,多个返回值用逗号分隔并用括号包围。返回值的顺序需与声明一致。函数支持返回值命名,可以在函数体内直接使用,且不可重复声明。函数可以赋值给变量、传递给其他函数或作为返回值。包级函数属于某个包,函数名首字母的大小写定义了其访问级别。如所有大写表示公有。init函数在主函数开始执行前自动运行,常用于初始化包、变量或其他前置工作。匿名函数和闭包允许在函数内部定义函数,且内部函数可以访问外部函数的变量