官术网_书友最值得收藏!

1.2.6 Go語言——2007—2009

貝爾實(shí)驗(yàn)室后來經(jīng)歷了多次動(dòng)蕩,包括Ken Thompson在內(nèi)的Plan 9項(xiàng)目原班人馬最終加入了谷歌公司。在Limbo等前輩語言誕生10多年后的2007年底,Go語言3個(gè)最初的設(shè)計(jì)者因?yàn)榕既坏囊蛩鼐奂揭黄鹋稢++(傳說是C++語言的布道師在谷歌公司到處鼓吹C++11各種強(qiáng)大的特性徹底惹惱了他們),他們終于抽出了20%的自由時(shí)間創(chuàng)造了Go語言。最初的Go語言規(guī)范從2008年3月開始編寫,最初的Go程序也是直接編譯為C語言,然后再二次編譯為機(jī)器碼。到2008年5月,谷歌公司終于發(fā)現(xiàn)了Go語言的巨大潛力,從而開始全力支持這個(gè)項(xiàng)目(谷歌的創(chuàng)始人甚至還貢獻(xiàn)了func關(guān)鍵字),讓他們可以將全部工作時(shí)間投到Go語言的設(shè)計(jì)和開發(fā)中。在Go語言規(guī)范初版完成之后,Go語言的編譯器終于可以直接生成機(jī)器碼?了。

1.hello.go——2008年6月

下面是初期Go語言程序正式開始測(cè)試的版本:

package main
func main() int {
    print "hello, world\n";
    return 0;
}

內(nèi)置的用于調(diào)試的print語句已經(jīng)存在,不過是以命令的方式使用的。入口main()函數(shù)還和C語言中的main()函數(shù)一樣返回int類型的值,而且需要return顯式地返回值。每個(gè)語句末尾的分號(hào)也還存?在。

2.hello.go——2008年6月27日

下面是2008年6月27日的Go代碼:

package main
func main() {
    print "hello, world\n";
}

入口函數(shù)main()已經(jīng)去掉了返回值,程序默認(rèn)通過隱式調(diào)用exit(0)來返回。Go語言朝著簡單的方向逐步進(jìn)?化。

3.hello.go——2008年8月11日

下面是2008年8月的代碼:

package main
func main() {
    print("hello, world\n");
}

用于調(diào)試的內(nèi)置的print由開始的命令改為普通的內(nèi)置函數(shù),使語法更加簡單一?致。

4.hello.go——2008年10月24日

下面是2008年10月的代碼:

package main
import "fmt"
func main() {
    fmt.printf("hello, world\n");
}

作為C語言中招牌的printf()格式化函數(shù)已經(jīng)移植到了Go語言中,函數(shù)放在fmt包中。不過printf()函數(shù)名的開頭字母依然是小寫字母,采用大寫字母表示導(dǎo)出的特性還沒有出?現(xiàn)。

5.hello.go——2009年1月15日

下面是2009年1月的代碼:

package main
import "fmt"
func main() {
    fmt.Printf("hello, world\n");
}

Go語言開始采用是否大小寫首字母來區(qū)分符號(hào)是否可以導(dǎo)出。大寫字母開頭表示導(dǎo)出的公共符號(hào),小寫字母開頭表示包內(nèi)部的私有符號(hào)。但需要注意的是,漢字中沒有大小寫字母的概念,因此以漢字開頭的符號(hào)目前是無法導(dǎo)出的(針對(duì)該問題,雖然我國的Go語言用戶早在2013年就已經(jīng)給出過相關(guān)建議,但是目前仍沒有結(jié)果)。

6.hello.go——2009年12月11日

下面是2009年12月的代碼:

package main
import "fmt"
func main() {
    fmt.Printf("hello, world\n")
}

Go語言終于移除了語句末尾的分號(hào)。這是Go語言在2009年11月10日正式開源之后第一個(gè)比較重要的語法改進(jìn)。從1978年《C程序設(shè)計(jì)語言》引入分號(hào)分隔的規(guī)則到現(xiàn)在,Go語言的設(shè)計(jì)者花了整整32年終于移除了語句末尾的分號(hào)。在這32年的演化過程中必然充滿了各種八卦故事,我想這一定是Go語言設(shè)計(jì)者深思熟慮的結(jié)果(現(xiàn)在Swift等新語言也是默認(rèn)忽略分號(hào)的,可見分號(hào)確實(shí)并不是那么重要)。

主站蜘蛛池模板: 托里县| 上杭县| 丘北县| 澄江县| 万荣县| 南丰县| 甘孜县| 收藏| 台州市| 忻城县| 嘉义市| 太谷县| 右玉县| 宜兰县| 合水县| 马关县| 衡阳县| 奉化市| 怀仁县| 崇礼县| 邵武市| 四子王旗| 临漳县| 阳泉市| 金昌市| 鲁甸县| 蕲春县| 宁阳县| 武安市| 常德市| 武清区| 临沧市| 汾阳市| 册亨县| 哈尔滨市| 巴马| 连城县| 安康市| 分宜县| 全州县| 肇东市|