从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的效能可以说是快上PHP3.5倍至6倍左右 ,而且撰写的语言还是JavaScript,蒸蚌,如此一来就不需要学习新语言了!搭配Babel更可以说是万能,不过那跟「跳跳虎」一样的Async逻辑还有那恐怖的Callback Hell,有人认为前者是种优点,这点我不否认,但是对学习PHP的我来说太过于"Mind Fuck",至于后者的Callback Hell虽然有Promise,但是那又是另一个「Then Hell」的故事了 。相较于Golang之下,Node.js似乎就没有那么吸引我了 。你确实可以用Node.js写出很多东西,不过那V8引擎的效能仍然有限,而且要学习新的事物,不就应该是「全新」的吗;)?
题外话: 为什么Node.js不适合大型和商业专案?
在抛弃改用Node.js 之后我曾经花了一天的时间尝试Rust 和Iron 框架,嗯??Rust 太强大了,强大到让我觉得Rust 不应该用在这里,这想法也许很蠢,但Rust 让我觉得适合更应该拿来用在系统或者是部分底层的地方,而不应该是网路服务 。
Golang是我最终的选择,主要在于我花了一天的时间来研究的时候意外地发现Golang夭寿简洁( 关键字只有25个 ) , 相较之下Rust太过于「强大」令我怯步;而且Golang带有许多工具,例如 go fmt 会自动帮你整理程式码、 go doc 会自动帮你生产文件、 go test 可以自动单元测试并生产覆盖率报表、也有 go get 套件管理工具(虽然没有版本功能) , 不过都很实用,而且也不需要加上分号( ; ),真要说不好的地方??大概就是强迫你花括号不能换行放吧(没错,我就是花括号会换行放的人) 。
当我在撰写这份文件的时候 我会先假设你有一定的基础,你可以先阅读下列的手册,他们都很不错 。
你能够在PHP 里面想建立一个变数的时候就直接建立 , 夭寿赞 , 是吗?
蒸蚌!那么Golang 呢?在Golang 中变数分为几类:「新定义」、「预先定义」、「自动新定义」、「覆盖」 。让我们来看看范例:
在PHP中你会很常用到 echo 来显示文字 , 像这样 。
然而在Golang中你会需要 fmt 套件,关于「什么是套件」的说明你可以在文章下述了解 。
这很简单,而且两个语言的用法相差甚少 , 下面这是PHP:
只是Golang 稍微聒噪了一点,你必须在函式后面宣告他最后会回传什么资料型别 。
在PHP 中你要回传多个资料你就会用上阵列,然后将资料放入阵列里面,像这样 。
然而在Golang 中你可以不必用到一个阵列,函式可以一次回传多个值:
两个语言的撰写方式不尽相同 。
主要是PHP 的阵列能做太多事情了,所以在PHP 里面要储存什么用阵列就好了 。
在Golang里??没有这么万能的东西,首先要先了解Golang中有这些型态: array ,slice ,map ,interface,
你他妈的我到底看了三洨,首先你要知道Golang是个强型别语言,意思是你的阵列中 只能有一种型态 ,什么意思?当你决定这个阵列是用来摆放字串资料的时候,你就只能在里面放字串 。没有数值、没有布林值,就像你没有女朋友一样 。
推荐阅读
- 小鬼直播工具在哪买便宜,主播小鬼怎么了
- c语言取按键键非阻塞函数,c语言判断按键按下
- vb.net能开发web程序吗,vbnet with
- 减肥吃什么小视频,看看减肥吃什么
- go语言调用c效率 go语言 c语言 效率
- 区块链钱包软件开发,区块链钱包软件开发思路
- 天翼怎么连接两个路由器,天翼宽带路由器怎么连接第二个无线路由器
- 安卓版应用传给苹果系统,安卓应用传给苹果能用吗
- 微信视频号能注销几次成功,微信的视频号能注销吗