欢迎来到天天文库
浏览记录
ID:57646029
大小:39.50 KB
页数:7页
时间:2020-08-30
《go语言入门教程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、介绍本文档是关于Go编程语言基础的一个介绍性的入门教程,偏向于熟悉C或C++的读者。本文并非一份语言的完整指南,如果需要的话,你应该去看看“语言规范”(languagespecification)。当读完本教程之后,你可能会希望继续看看“EffectiveGo”,这份文档更深入的挖掘如何使用Go语言。此外还有一份《三日入门》的教程可供参考:第一日,第二日,第三日.本文将会以一系列适当的程序来说明语言的一些关键特性。所有的示例程序都是可运行的(在撰写本文时),并且这些程序都会提交到版本库的/doc/progs/目录下。程序片段都会标注上在源文件中的行号,为了清晰起见,空行前面的行号留空
2、。 Hello,World让我们以最常见的方式开始吧:05 packagemain07 importfmt"fmt" //本包实现了格式化输入输出09 funcmain(){ 10 fmt.Printf("Hello,world;orΚαλημέρακόσμε;orこんにちは世界/n"); 11 }每份Go的源文件都会使用package语句声明它的包名。同时也可以通过导入其它包来使用其中定义的功能。这段代码导入了包fmt来调用我们的老朋友——现在它的开头字母是大写的,并且前面带有包名限定——fmt.Printf。函数的声明使用关键字func,整个程序
3、将会从为main包中的main函数开始(经过初始化之后)。字符串常量可以包含Unicode字符,采用UTF-8编码。(事实上,所有Go程序的源文件都是使用UTF-8编码的)注释的方式同C++一样: /*...*/ //...稍后,我们会继续谈到print。编译Go是一个编译型语言。目前有两个编译器,其中gccgo编译器采用了GCC作为后端,此外还有一系列根据其所适用的架构命名的编译器,例如6g适用于64位的x86结构,8g适用于32位的x86结构,等等。这些编译器比gccgo运行的更快、生成的代码更加有效率。在撰写本文的时候(2009年底),他们还具有一个更加健壮的运行期
4、系统,但是gccgo也正在迎头赶上。下面来看看如何编译和运行程序。采用6g是这样的 $6ghelloworld.go #编译;中间代码位于helloworld.6中 $6lhelloworld.6 #链接;输出至6.out $6.out Hello,world;orΚαλημέρακόσμε;orこんにちは世界 $gccgo的方式看起来更加传统一些。 $gccgohelloworld.go $a.out Hello,world;orΚαλημέρακόσμε;orこんにちは世界 $Echo下一步,是来实现一个Unix的传统命令Echo:05
5、 packagemain07 import( 08 "os"; 09 "flag"; //commandlineoptionparser 10 )12 varomitNewline=flag.Bool("n",false,"don'tprintfinalnewline")14 const( 15 Space=""; 16 Newline="/n"; 17 )19 funcmain(){ 20 flag.Parse(); //Scansthearglistandsetsupflags 21
6、 varsstring=""; 22 fori:=0;i0{ 24 s+=Space 25 } 26 s+=flag.Arg(i); 27 } 28 if!*omitNewline{ 29 s+=Newline 30 } 31 os.Stdout.WriteString(s); 32 }这段程序很小,但是却有几个特别之处。前面这个例子中,我们看到可以使用func来声
7、明一个函数,同时关键字var、const和type(目前还没有用到)也可以用于声明,就好像import一样。注意,我们可以将同一类的声明放到括号中,以分号分隔,例如第7-10行和第14-17行。但也并非一定要如此,例如可以这样写 constSpace="" constNewline="/n"分号在此处并不是必须的。事实上,任何顶层声明后面都不需要分号。但如果要是在一个括号内进行一系列的声明,就需要用分号来分割了。你可以像在C、C++或Java中那
此文档下载收益归作者所有