本页使用了标题或全文手工转换

Go

维基百科,自由的百科全书
跳转至: 导航搜索
Go
Golang.png
编程范型 編譯型可平行化結構化指令式
設計者 罗伯特·格瑞史莫Robert Griesemer英语Robert Griesemer
羅勃·派克Rob Pike
肯·汤普逊Ken Thompson
實作者 Google
发行时间 2009
最新发行时间 1.4.2 / 2015年2月1日,5個月前2015-02-01[1]
作業系統 LinuxMac OS XFreeBSD
許可證 BSD
網站 http://golang.org/

GoGoogle開發的一种静态强类型編譯型并发型,并具有垃圾回收功能编程语言[3]

羅伯特·格瑞史莫英语Robert Griesemer羅勃·派克(Rob Pike)及肯·汤普逊於2007年9月开始设计Go語言,[2],稍後Ian Lance Taylor, Russ Cox加入專案中。Go語言是基於Inferno作業系統所開發的。[4]Go語言於2009年11月正式宣布推出,成為開放原始碼專案,并在LinuxMac OS X平台上进行了實現,后追加Windows系统下的实现。[5]

目前go语言基于1.x每半年发布一个版本。

描述[编辑]

Go语言的语法接近C语言,但是对于变量的声明是不同的,其他语法不同之处是For循环if判断语句不需要用小括号括起来。Go语言支持垃圾回收功能。Go语言的并行模型是以東尼·霍乐CSP为基础,采取类似模型的其他语言包括OccamLimbo[2],但它也具有Pi运算的特征,比如通道传输。

与C++相比,Go语言並不包括如异常处理继承泛型断言虚函数等功能,但增加了slice型、并发、管道、垃圾回收、接口(interface)等特性的语言级支持[2]。当然,Google 对于泛型的态度还是很开放的,但在该语言的常见问题列表中,对于断言的存在,则持负面态度,同時也为自己不提供型別继承來辩护。不同于Java,Go语言内嵌了关联数组(也称为哈希表(hashes)或字典(dictionaries)),就像字符串类型一样。

编译器[编辑]

当前有两个Go語言的编译器的分支。官方编译器和gccgo。官方编译器在初期使用C写成,后用go重写从而实现自举[6]。Gccgo是一个使用标准GCC作为后端的Go编译器[7]

官方编译器支持跨平台编译(但不支持CGO),允许将源码编译为可在目标系统、架构上执行的二进制文件。

範例[编辑]

下面是用Go語言写成的Hello World程序。

package main

import "fmt"

func main() {
	fmt.Println("Hello, World")
}

下面的例子说明了怎样用Go語言去实现一个像Unix中的 echo命令的程序[8]

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)
}

同名爭議[编辑]

2003年發表的程式語言Go!英语Go!_(programming_language),Go名稱與其雷同。

參考文獻[编辑]

外部連結[编辑]