2019独角兽企业重金招聘Python工程师标准>>>

让我们更细致地看看这个程序。Go程序是从上至下、从左到右阅读的(就像看书一样)。第一行是这样的:

package main

这一行叫做“包的声明”。每一个Go程序文件必须先进行包的声明。包是Go程序组织和复用代码的方式。Go程序分两种:可执行程序和库程序。可执行程序是我们可以在终端直接运行的程序(在Windows系统里,它们的后缀是.exe)。库程序是我们打包在一起的代码集合,以供其他程序使用。我们日后将深入谈到库程序,而现在我们只需要确保这一行代码必须包含在你写的所有程序中。

接下来的一行是空行。计算机用一个(或多个)特殊字符代表空行。换行、空格、制表符都被认为是空字符(因为我们看不见它们)。Go语言通常不关注空字符,我们只是用它让程序看起来更方便于阅读(你也可以删除这一个空行,这不会影响程序的运行)。

然后我们看到:

import "fmt"

import关键字用于将其他程序包引入到我们的程序中。fmt包(format的缩写)是用于将我们的输入输出内容格式化的。鉴于我们刚才提到关于包声明的内容,你觉得在fmt包的文件中,第一行写着的是什么呢?

我们发现fmt被双引号""包围着。像这样使用双引号的作用是声明字符串字面量,它是一种表达式。在Go语言中,字符串代表着一串具有明确长度的字符(字母、数字、符号等等)。我们将在下一章更详细地讲解字符串,而现在我们只需要记得一个重要的事情:字符串由一个双引号"开始,另一个双引号"结束,两者中间的所有字符就是字符串的内容(双引号本身并不是字符串的内容)。

以//为开头的那一行叫做注释。Go编译器将忽略注释的内容,注视只是给你自己看的(或者需要接手你源代码的人)。Go支持两种注释的方式:以//开头的注释将视整一行为注释的内容;以/*   */为开头和结尾的注释将所有包含在两个*号之间的内容视为注释的内容(而且还可以包含多行)。

接着你看到一个函数的声明:

func main() {
fmt.Println("Hello World")
}

函数是Go程序的构造块。它们有入口参数、返回参数和一系列称为程序语句的依次执行的步骤。所有的函数以func为开头,紧跟着是函数的名称(在这个例子中,函数叫做main)、用小括号()包起来的零个或以上的入口参数、可选的返回类型,还有一个被大括号{}包含着的“函数体”。这个程序没有入口参数,也不返回任何参数,而函数体里也只有一条程序语句。函数名称main有点特别,它是当你执行程序时被调用的函数。

最后,你看到这行代码:

fmt.Println("Hello World")

这个语句由三部分组成。首先我们调用了一个在fmt包中的叫做Println的函数(连起来写成fmt.Println,Println的意思是Print Line)。接下来我们创建了一个包含hello World字符的字符串,然后以这个字符串作为第一个同时也是唯一一个入口参数去调用(也叫呼叫或者执行)这个函数。

到此为止,我们已经看到了一些新术语,你估计也开始有点不知所措了。有些时候,刻意地大声念出你对程序的解读会有所帮助。

我们对以上你写的代码可以这样解读:

“创建一个新的可执行程序,它引用了fmt库并包含一个叫main的函数。这个函数没有入口参数,也不返回任何东西,却做了这些事情:使用了fmt包中的Println函数,并用Hello World字符串作为入口参数调用它。”

在你的程序中,Println函数产生了作用。你可以查看更多关于它的信息,只需要在终端中输入以下命令:

godoc fmt Println

在输出的内容之中,你会看到:

Println formats using the default formats for
its operands and writes to standard output.
Spaces are always added between operands and a
newline is appended. It returns the number of
bytes written and any write error encountered.

Go是一门拥有优秀文档的编程语言。但是,除非你是本来已经对编程有一定基础,否则它的文档将难以被理解。不过godoc命令极其有用,当你遇到困难的时候,它也许是你解决问题的开始。

回到手里的函数,文档告诉你Println函数将你给它的东西输出到标准输出里——也就是你在用的终端输出。这个函数让Hello World字符串被显示了出来。

在下一章里,我们将探讨Go是怎样存储并且表示类似Hello World这些类型的。

原文地址:http://www.zingscript.com/translate/golang-book

转载于:https://my.oschina.net/zingscript/blog/194139

【原创翻译】如何阅读一个GO程序相关推荐

  1. 深入Python3阅读day01——从一个Python程序开始

    从一个Python程序开始 一.分析书的目录 二.大致看一下前三章开头的话 三.编写02章的新手入门程序 四.声明函数 五.可选参数和命名参数 六.编写易读的代码 七.IMPORT的搜索路径 七.一切 ...

  2. iOS7人机界面指南 – ISUX原创翻译

    http://isux.tencent.com/ios-human-interface-guidelines-ui-design-basics-ios7.html iOS7人机界面指南 – ISUX原 ...

  3. iOS人机界面指南(界面设计基础部分)ISUX原创翻译

    http://isux.tencent.com/ios-human-interface-guidelines-ui-design-basics-ios7.html iOS人机界面指南(界面设计基础部分 ...

  4. 怎么用linux设计一个小程序,“Linux”小程序发布一个月后,我们发现了什么

    原标题:"Linux"小程序发布一个月后,我们发现了什么 这一个月来,这个小程序得到了八千多人的使用,一百多位贡献者实际参与了翻译贡献,其中贡献最高的"Datura st ...

  5. 一个老程序员的30年生涯回顾(译文)

    前几天,我读到一篇文章[1],一个60多岁老程序员回顾自己的人生. 读完以后,我很受触动,觉得对于软件行业的很多看法,我也有同感.下面就是这篇文章的翻译. 一个老程序员的30年生涯回顾(译文) 原文网 ...

  6. 控制台编写JAVA程序教程_写一个java程序的步骤是什么?写java程序技巧

    写Java程序是要按照步骤来的,这样才能写好一个java程序,那么接下来,我们就来给大家讲解一下写一个java程序的步骤是什么? (1)创建Java项目:"FileàNewàProjectà ...

  7. 第一章第一个c#程序上机_我从第一个#100DaysOfCode中学到的东西

    第一章第一个c#程序上机 On May 17th, I completed my first round of #100DaysOfCode. In case you haven't heard, # ...

  8. 比特币程序_比特币如何运作? 我建立了一个应用程序向您展示。

    比特币程序 by Sean Han 通过肖恩·韩 比特币如何运作? 我建立了一个应用程序向您展示. (How does bitcoin work? I built an app to show you ...

  9. 【原创】如何写一个框架:步骤(下)

    [原创]如何写一个框架:步骤(上) 说明:写本文的时候作者完全是把脑子里的东西写了出来,没有参考任何的资料,所以对于每一项内容可能都是不完整的,不能作为一个完整的参考.有一些方法学的东西每个人都有自己 ...

最新文章

  1. 由于Eclipse版本不符造成的异常
  2. 1.1 计算机的发展
  3. 1032. 挖掘机技术哪家强(20)
  4. redis集群常用命令
  5. 剑指Offer - 面试题17. 打印从1到最大的n位数
  6. mysql离散查询_如何写出高性能的MySQL查询
  7. XenApp Command Line参数的传递
  8. hdu 2089 不要62【数位dp】
  9. 生产上线发现重大Bug的思考
  10. 小米盒子显示连接服务器失败,小米盒子连接AirPlay失败的解决方法
  11. VS代码格式化快捷键
  12. DDR3/4 内存模组(SIMM DIMM RIMM ,SO-DIMM UDIMM RDIMM LRDIMM区别)
  13. 龙芯电脑的详细资料,支持国货的请进来!
  14. 自定义 kubectl-plugin
  15. 岁月的剪影【五月世界末日】
  16. 目前最火的人工神经网络,神经网络软件有哪些
  17. golang优雅的使用context
  18. 玩吃鸡台式计算机配置,玩吃鸡的电脑配置推荐_玩吃鸡的电脑配置最低要多少...
  19. 我看 - 《梦断紫禁城》 的一些感想
  20. C++进制转换(十进制转二进制、八进制、随意进制)

热门文章

  1. python文件传输模块ftplib模块的使用
  2. 字符串的第n个排列的算法
  3. mybatis中sqlSession的设计与实现
  4. LeetCode Implement strStr(kmp或者BM)
  5. qt中用mysql获取所有的数据库、数据库中的表名
  6. 前端学习记录 JS DOM
  7. 朴素贝叶斯-垃圾邮件分类实现
  8. C++智能指针简单剖析
  9. 福大软工1816 · 第七次作业 - 需求分析报告之拖鞋旅游队
  10. 在MRC模式下使用SDWebImage