介绍
Go是Google开发的一种编译型,可平行化,并具有垃圾回收功能的编程语言。
罗布·派克(Rob Pike),罗伯特·格瑞史莫(Robert Griesemer),及肯·汤普逊(unix的创造者)于2007年9月开始设计Go语言,稍后Ian Lance Taylor, Russ Cox加入项目中。Go语言是基于Inferno操作系统所开发的。Go语言于2009年11月正式宣布推出,成为开放源代码项目,并在Linux及Mac OS X平台上进行了实现,后追加Windows系统下的实现。
描述
Go语言的语法接近C语言,但是对于变量的声明是不同的,其他语法不同之处是For循环和if判断语句不需要用小括号括起来。Go语言支持垃圾回收功能。Go语言的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础,采取类似模型的其他语言包括Occam和Limbo,但它也具有Pi运算的特征,比如通道传输。
与C++相比,Go语言并不包括如异常处理、继承、泛型、断言、虚函数等功能,但增加了slice型、并发、渠道、垃圾回收、接口(interface)等特性的语言级支持。当然,Google对于泛型的态度还是很开放的,但在该语言的常见问题列表中,对于断言的存在,则持负面态度,同时也为自己不提供类型继承来辩护。不同于Java,Go语言内嵌了关联数组(也称为哈希表(hashes)或字典(dictionaries)),就像字符串类型一样。
go语言已经有了不少的优秀项目,如现在流行的docker就是用golang编写的。推荐一个链接了解更多http://www.open-open.com/lib/view/open1396063913278.html
安装配置
下载
环境变量
GOROOT
PATH win32: %GOROOT%/bin
linux: $GOROOT/bin
推荐编辑器vim
推荐IDE: LiteIDE
程序示例
HelloWorld!
package main import "fmt" func main() { fmt.Println("Hello, World") }
goroutine多线程并行
// goroutine project main.go package main import ( "fmt" ) func f(from string){ for i := 0;i<3;i++{ fmt.Println(from,":",i) } } func main() { f("direct") go f("goroutine") go func(msg string){ fmt.Println(msg) }("going") var input string fmt.Scanln(&input) fmt.Println("done") }
运行结果:
golang调用系统命令echo helloworld
package main import ( "fmt" "os/exec" "sync" "strings" ) func exe_cmd(cmd string, wg *sync.WaitGroup) { fmt.Println(cmd) parts := strings.Fields(cmd) out, err := exec.Command(parts[0],parts[1]).Output() if err != nil { fmt.Println("error occured") fmt.Printf("%s", err) } fmt.Printf("%s", out) wg.Done() } func main() { wg := new(sync.WaitGroup) commands := []string{"echo HelloWorld"} for _, str := range commands { wg.Add(1) go exe_cmd(str, wg) } wg.Wait() }
有疑问加站长微信联系(非本文作者)