Google Go:新興語(yǔ)言的代表
Go是Google開(kāi)發(fā)的一種編譯型,并發(fā)型,并具有垃圾回收功能的編程語(yǔ)言。Robert Griesemer,羅勃·派克及肯·湯普遜于2007年9月開(kāi)始設(shè)計(jì)Go語(yǔ)言,Go語(yǔ)言是基于Inferno操作系統(tǒng)所開(kāi)發(fā)的。Go語(yǔ)言于2009年11月正式宣布推出,并在Linux及Mac OS X平臺(tái)上進(jìn)行了實(shí)現(xiàn)。
Go語(yǔ)言的語(yǔ)法接近C語(yǔ)言,但是對(duì)于變量的聲明是不同的,其他語(yǔ)法不同之處是for循環(huán)和if判斷式?jīng)]有括號(hào)圍繞。Go語(yǔ)言支持垃圾回收功能。Go語(yǔ)言的并行模型是以Tony Hoare的CSP為基礎(chǔ),采取類(lèi)似模型的其他語(yǔ)言包括occam和Limbo。
Go 語(yǔ)言并不包括如異常處理、繼承、泛型、斷言、虛函數(shù)等功能。當(dāng)然,Google 對(duì)于泛型的態(tài)度還是很開(kāi)放的,但在該語(yǔ)言的常見(jiàn)問(wèn)題列表中,對(duì)于斷言的存在,則持負(fù)面態(tài)度,同時(shí)也為自己不提供型別繼承來(lái)辯護(hù)。不同與Java,Go語(yǔ)言?xún)?nèi)嵌了關(guān)聯(lián)數(shù)組(也稱(chēng)為哈希表(hashes)或字典(dictionaries)),就像字符串類(lèi)型一樣。
范例
下面是用Go語(yǔ)言寫(xiě)成的Hello World程序。
- package main
- import "fmt"
- func main() {
- fmt.Println("Hello, World")
- }
下面的例子說(shuō)明了怎樣用Go語(yǔ)言去實(shí)現(xiàn)一個(gè)像Unix中的echo命令的程序:
- package main
- import (
- "os"
- "flag" // command line option parser
- )
- var omitNewline = flag.Bool("n", false, "don't print final newline")
- const (
- Space = " "
- Newline = "\n"
- )
- func main() {
- flag.Parse() // Scans the arg list and sets up flags
- var s string = ""
- for i := 0; i < flag.NArg(); i++ {
- if i > 0 {
- s += Space
- }
- s += flag.Arg(i)
- }
- if !*omitNewline {
- s += Newline
- }
- os.Stdout.WriteString(s)
- }
【編輯推薦】