- 论坛徽章:
- 1
|
我们在等待 Perl6 的道路上一天天老去,Perl6 呢?还!没!好!二儿子都能打酱油了,还没好!
终于有一天,我决定把自己的“母语”改成 Golang。“改母语”和只是学一个新语言不同,母语意味着做任何程序工作的首选。
今天就给大家介绍一下 Golang。
Golang 比 Perl 有很多优势,其中之一就是语言级别的多线程,写出来的程序可以充分利用 CPU 多核。多线程的实现是基于 epoll 的,也就是 Perl+AnyEvent+Coro,还是在多线程的情况下实现了这一切,而且还是扁平化事件驱动,顺序写代码,不会有一大堆回调混在一起。
下面就简单对比一下这两个语言的语法,花两分钟看一眼,就可以开始写程序了!
变量
Perl:- my $str = "hello";
- my $num = 100;
复制代码 Go:
强类型语言区分类型- str := "hello" // str 的类型是字符串
- num := 100 // num 的类型是 int
复制代码 数组
Perl:- @av,$av[0], $av[20],动态数组,索引随便写。
复制代码 Go:
强类型语言区分类型,数组也不例外哈希
Perl:- %hash,用于 key/value 对。$hash{"key"} = 100
复制代码 Go:
需要分别指明 key/value 的类型- hv := map[string]int{"key": 100}
- hv["key"] = 200
复制代码 循环
Perl:while, for, foreach
Go:只有一个 for
函数
Perl:Go:- func xxx (str string) int {}
复制代码 函数要指明参数个数和类型,包括返回值个数和类型
程序结构
Perl:- !#/usr/bin/perl
- use xxx;
- my $str;
- &function1("aa", "bb")
- sub function1 {
- my $aa, $bb = @_;
- }
复制代码 Go:- package main
- import "xxx"
- func main () {
- function1 ("aa", "bb")
- }
- func function1 (aa string, bb string) {
- }
复制代码 注意:以上介绍不严谨且不全面,但非常简单,且覆盖了两个语言最基本的东西。
原谅我随波逐流的在这急功近利的时代选择了标题党,此文显然算不上是“简单入门”,只是想告诉大家,真的非常容易学习。我学习和使用 Golang 已经有一段时间,感觉就像 flw 所说,“Golang 是非常值得学习的语言”。
想继续学习的同学看这里:
以下列出了我学习资料的内容和顺序:
1. 先走一遍官方介绍。
https://tour.golang.org (大概需要半天时间)
里面的课后练习开始如果觉得难懂就跳过,整个过程不明白的地方做存疑操作。
2. 接下来看
https://golang.org/doc/effective_go.html
这个就介绍的相对细了,要仔细看,第一遍看的时候对不明白的地方也存疑,之后逐步搞明白。
3. Golang 官方博客
http://blog.golang.org/ 里面非常多的小的地方的语言讲解,例如 slice 是如何实现的
4. Golang 语言说明书
https://golang.org/ref/spec 这部分内容最多。尽量都过一遍,找到前面学习中漏掉的内容和概念模糊的东西。
5. 看 Golang 源代码。
说到 Golang 源代码,我要再补充一个我个人认为 Golang 的另一个优点。在学了几周 Golang 以后,翻开 Golang 源代码,虽然我不理解整体的设计,但几乎没有一行代码是我看不懂的,每一行我都知道它在做什么。而 Perl 我用了 10 年+,CPAN 上仍然有大把的晦涩难懂的黑魔法代码。
Golang 的源代码容易看懂,还能学到很多东西。这部分我是从 net/http 开始的。
|
评分
-
查看全部评分
|