GO编程指导

本文属翻译,原文地址 http://goroot.org/viewthread.php?tid=29&extra=page%3D1


介绍[Top]
这个文档是介绍GO编程语言的,针对熟悉C或者C++的程序员. 这不是一个广泛适用的入门介绍; 接近入门指导的文件请参考语言详述. 在你看完这份指导之后,你可能需要看一下高效GO编程, 一分更深入介绍GO的文件. 同时,三天教程的PPT版请参考: Day 1, Day 2, Day 3.
这个主要是通过一个适当的程序来介绍GO语言的特性. 所以的程序都运行正常并且保存在 /doc/progs/下。
程序片断均以原先的行号注释,为清晰,空白行保持空白.
(译者注,由于原先已标行号,则不再以代码高亮显示)
Hello, World[Top]
让我们以常规方式来开始:

1.


2. 05 package main
3.

4. 07 import fmt "fmt" // Package implementing formatted I/O.
5.

6. 09 func main() {
7. 10 fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n");
8. 11 }

复制代码
GO源码均以所在的包语句来声明. 也可以导入其它包来使用它们的功能. 这个程序导入fmt包使用如今以大写开头,封装好的,友好的fmt.Printf.
函数以关键词func来标识. 这个main包的main函数是程序开始运行的地方(在初始化之后)。
字符串常量可以包含Unicode字符集, UTF-8编码. (事实上,GO的源码也是以UTF-8编码的.)
注释语句和C++的一样:
/* ... */
// ...
我们后面会介绍更多关于打印输出的.

编译[Top]
Go 是编译语言. 目前有两种编译器. Gccgo 是使用gcc端的编译器. 还有一套以不同名字命名的,针对不同硬件体系的编译器: 6g用于64位x86平台, 8g 用于32位x86平台, 还有更多. 这些编译器运行速度明显快于通用平台下的gccgo. 写本文时 (2009年底), 它们更具有鲁棒运行期系统,当然gccgo也在赶上来.
我们来看一下怎么使用6g来编译和运行我们的程序,

1.


2. $ 6g helloworld.go # compile; object goes into helloworld.6
3. $ 6l helloworld.6 # link; output goes into 6.out
4. $ 6.out
5. Hello, world; or Καλημέρα κόσμε; or こんにちは 世界
6. $

复制代码
使用gccgo看起来更传统一点.

1.


2. $ gccgo helloworld.go
3. $ a.out
4. Hello, world; or Καλημέρα κόσμε; or こんにちは 世界
5. $

复制代码
Echo[Top]
接下来,有个unix版本的echo:

1. 05 package main
2.

3. 07 import (
4. 08 "os";
5. 09 "flag"; // command line option parser
6. 10 )
7.

8. 12 var omitNewline = flag.Bool("n", false, "don't print final newline")
9.

10. 14 const (
11. 15 Space = " ";
12. 16 Newline = "\n";
13. 17 )
14.

15. 19 func main() {
16. 20 flag.Parse(); // Scans the arg list and sets up flags
17. 21 var s string = "";
18. 22 for i := 0; i < flag.NArg(); i++ {
19. 23 if i > 0 {
20. 24 s += Space
21. 25 }
22. 26 s += flag.Arg(i);
23. 27 }
24. 28 if !*omitNewline {
25. 29 s += Newline
26. 30 }
27. 31 os.Stdout.WriteString(s);
28. 32 }

复制代码
这个程序很小,但它做了几件事。在上一个程序,我们看到func标识一个函数. 而关键字var, const, and type (还没用到) 也能用来引入一个声明,正如import所为. 注意到我们可以把声明放进一个括号里,然后用分号将它们分隔开,如第7-10,和第14-17行所示. 但不是必要的,我们也可以这样做

1.


2. const Space = " "
3. const Newline = "\n"

复制代码
。。。翻译中,未完待续。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值