- 論壇徽章:
- 1
|
我們在等待 Perl6 的道路上一天天老去,Perl6 呢?還!沒!好!二兒子都能打醬油了,還沒好!
終于有一天,我決定把自己的“母語”改成 Golang。“改母語”和只是學(xué)一個新語言不同,母語意味著做任何程序工作的首選。
今天就給大家介紹一下 Golang。
Golang 比 Perl 有很多優(yōu)勢,其中之一就是語言級別的多線程,寫出來的程序可以充分利用 CPU 多核。多線程的實現(xiàn)是基于 epoll 的,也就是 Perl+AnyEvent+Coro,還是在多線程的情況下實現(xiàn)了這一切,而且還是扁平化事件驅(qū)動,順序?qū)懘a,不會有一大堆回調(diào)混在一起。
下面就簡單對比一下這兩個語言的語法,花兩分鐘看一眼,就可以開始寫程序了!
變量
Perl:- my $str = "hello";
- my $num = 100;
復(fù)制代碼 Go:
強類型語言區(qū)分類型- str := "hello" // str 的類型是字符串
- num := 100 // num 的類型是 int
復(fù)制代碼 數(shù)組
Perl:- @av,$av[0], $av[20],動態(tài)數(shù)組,索引隨便寫。
復(fù)制代碼 Go:
強類型語言區(qū)分類型,數(shù)組也不例外哈希
Perl:- %hash,用于 key/value 對。$hash{"key"} = 100
復(fù)制代碼 Go:
需要分別指明 key/value 的類型- hv := map[string]int{"key": 100}
- hv["key"] = 200
復(fù)制代碼 循環(huán)
Perl:while, for, foreach
Go:只有一個 for
函數(shù)
Perl:Go:- func xxx (str string) int {}
復(fù)制代碼 函數(shù)要指明參數(shù)個數(shù)和類型,包括返回值個數(shù)和類型
程序結(jié)構(gòu)
Perl:- !#/usr/bin/perl
- use xxx;
- my $str;
- &function1("aa", "bb")
- sub function1 {
- my $aa, $bb = @_;
- }
復(fù)制代碼 Go:- package main
- import "xxx"
- func main () {
- function1 ("aa", "bb")
- }
- func function1 (aa string, bb string) {
- }
復(fù)制代碼 注意:以上介紹不嚴謹且不全面,但非常簡單,且覆蓋了兩個語言最基本的東西。
原諒我隨波逐流的在這急功近利的時代選擇了標題黨,此文顯然算不上是“簡單入門”,只是想告訴大家,真的非常容易學(xué)習(xí)。我學(xué)習(xí)和使用 Golang 已經(jīng)有一段時間,感覺就像 flw 所說,“Golang 是非常值得學(xué)習(xí)的語言”。
想繼續(xù)學(xué)習(xí)的同學(xué)看這里:
以下列出了我學(xué)習(xí)資料的內(nèi)容和順序:
1. 先走一遍官方介紹。
https://tour.golang.org (大概需要半天時間)
里面的課后練習(xí)開始如果覺得難懂就跳過,整個過程不明白的地方做存疑操作。
2. 接下來看
https://golang.org/doc/effective_go.html
這個就介紹的相對細了,要仔細看,第一遍看的時候?qū)Σ幻靼椎牡胤揭泊嬉,之后逐步搞明白?br />
3. Golang 官方博客
http://blog.golang.org/ 里面非常多的小的地方的語言講解,例如 slice 是如何實現(xiàn)的
4. Golang 語言說明書
https://golang.org/ref/spec 這部分內(nèi)容最多。盡量都過一遍,找到前面學(xué)習(xí)中漏掉的內(nèi)容和概念模糊的東西。
5. 看 Golang 源代碼。
說到 Golang 源代碼,我要再補充一個我個人認為 Golang 的另一個優(yōu)點。在學(xué)了幾周 Golang 以后,翻開 Golang 源代碼,雖然我不理解整體的設(shè)計,但幾乎沒有一行代碼是我看不懂的,每一行我都知道它在做什么。而 Perl 我用了 10 年+,CPAN 上仍然有大把的晦澀難懂的黑魔法代碼。
Golang 的源代碼容易看懂,還能學(xué)到很多東西。這部分我是從 net/http 開始的。
|
評分
-
查看全部評分
|