Go是Google推出的一种编程语言。专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发Go,是因为过去10多年间软件开发的难度令人沮丧。
var sum int // Just a declaration var total int = 42 // A declaration with initialization
第一眼看上去有些奇怪,但这样是有好处的,例如下面的这个C代码片段:
int* a, b;
这就意味着a是一个指针,但b却不是。要声明他们都是指针必须重复两次,但在Go中,你可以这样声明:
var a, b *int
当一个变量被初始化后,编译器会自动识别他的类型,所以不必要指明其类型:
var label = "name"
这样var关键字也就多余了,因此作者提出了一个新的赋值操作符声明并初始化一个新变量:
name := "Samuel"
Conditionals(条件)
Go中的条件句使用If-else,与C语言相同。但是它的条件不需要包含在括号中,这将减少阅读代码时的视觉混乱。当然,在条件之前还可以添加一个简单的声明。
result := someFunc(); if result > 0 { /* Do something */ } else { /* Handle error */ }
还可以:
if result := someFunc(); result > 0 { /* Do something */ } else { /* Handle error */ }
Switches
Switches 语句也与C类似,但是在C的基础上进行了改进。
C 代码:
int result; switch (byte) { case 'a': case 'b': { result = 1 break } default: result = 0 }
Go 代码:
var result int switch byte { case 'a', 'b': result = 1 default: result = 0 }
Go 匹配的不仅仅是integer和character类型。
C 代码:
int result = calculate(); if (result < 0) { /* negative */ } else if (result > 0) { /* positive */ } else { /* zero */ }
Go 代码:
switch result := calculate(); true { case result < 0: /* negative */ case result > 0: /* positive */ default: /* zero */ }
当switch的值被忽略时,假设为真,所以上述代码还可简化为:
switch result := calculate(); { case result < 0: /* negative */ case result > 0: /* positive */ default: /* zero */ }
原文对Go语言的语法进行了详细的介绍,此文章只是原文的一小部分,更多详情请查看原文:Google Go: A Primer
+++++++++++++++++++++++++++++++++++++
golang http://golang.org/ Go语言是由Google开发的一个开源项目,具体语言特征就不细说了,可以查看一下文档。 学习使用了几天,想起了一句广告语: 简约而不简单。
资深程序员 云风对go语言使用的一些体验 http://blog.codingnow.com/2010/11/go_prime.html
go 语言翻译项目 http://code.google.com/p/golang-china/
《学习 go语言》 中文版 http://www.mikespook.com/learning-go/
《go 编程导读》 http://code.google.com/p/ac-me/downloads/list
当然, 最主要的还是golang 的官方文档 http://golang.org/doc/docs.html
golang windows 上安装 http://code.google.com/p/gomingw/updates/list
golang 是比较新的语言。 现在的版本还没到 1.0 . 据说明年的时候能够发布1.0 。
现在国内已经有些公司使用golang 构建一些系统 。
qbox.me 就是用go 构建的一个网盘。拘束 douban 也有些是go搭建的服务。
go 太年轻了, 年轻到没有一个成熟的ide .
当然,linux c的程序员们无所谓。 可以用vim emacs 配合gocode , 绝对得心应手。http://www.mikespook.com/?p=1102
对于一些编程比较以来ide 的程序员来说,就比较痛苦了。 这里推荐一个 http://go-ide.com/ , 本来是idea 的一个插件,后来作者把这个项目独立出来。
试用过一些ide 其中包括 eclipse的golang 插件,vim +gocoede, 还是 go-ide这个最顺手, 可能也是应为一直都在用idea ,比较熟悉吧。其中包含 代码高亮,智能提示,代码折叠,编译,转到方法定义 等等。
还等什么呢? 尝试一下吧。有人说,当你手里只有一把锤子的时候,你看什么都像钉子。
尝试不同的语言,也许会发现另一番景色