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"

复制代码
。。。翻译中,未完待续。。。

你可能感兴趣的:(编程,PHP,OS,gcc,Go)