Go程序设计语言1.1 hello,world-阿里云开发者社区

开发者社区> 华章计算机> 正文

Go程序设计语言1.1 hello,world

简介:
+关注继续查看

第1章

The Go Programming Language

入  门

本章是对于Go语言基本组件的一些说明。希望本章所提供的足够信息和示例,能够使您尽可能快地做一些有用的东西。本书所有的例子都是针对现实世界的任务的。本章将带您尝试体验用Go语言来编写各种程序:从简单的文件、图片处理到并发的客户端和服务器的互联网应用开发。虽然在一章里不能把所有东西讲清楚,但是以这类应用作为学习一门语言的开始是一种高效的方式。

学习新语言比较自然的方式,是使用新语言写一些你已经可以用其他语言实现的程序。我们试图说明和解释如何用好Go语言,当你写自己的代码的时候,本章的代码可以作为参考。

1.1 hello,world

我们依然从永恒的“hello,world”例子开始,它出现在1978年出版的《The C Program-ming Language》这本书的开头。C对Go的影响非常直接,我们用“hello,world”来说明一些主要的思路:

 

Go是编译型的语言。Go的工具链将程序的源文件转变成机器相关的原生二进制指令。这些工具可以通过单一的go命令配合其子命令进行使用。最简单的子命令是run,它将一个或多个以.go为后缀的源文件进行编译、链接,然后运行生成的可执行文件(本书中我们使用$符号作为命令提示符):

 

不出意料地,这将输出:

 

Go原生地支持Unicode,所以它可以处理所有国家的语言。

如果这个程序不是一次性的实验,那么编译输出成一个可复用的程序比较好。这通过go build来实现:

 

这条命令生成了一个叫作helloworld的二进制程序,它可以不用进行任何其他处理,随时执行:

 

我们给每一个重要的例子都加了一个标签,提示你可以从本书在gopl.io的源码库获取代码:

 

如果执行go get gopl.io/ch1/helloworld,它将会把源代码取到相应的目录。这将在2.6节和10.7节进行更多的讨论。

现在我们来说说该程序本身。Go代码是使用包来组织的,包类似于其他语言中的库和模块。一个包由一个或多个.go源文件组成,放在一个文件夹中,该文件夹的名字描述了包的作用。每一个源文件的开始都用package声明,例子里面是package main,指明了这个文件属于哪个包。后面跟着它导入的其他包的列表,然后是存储在文件中的程序声明。

Go的标准库中有100多个包用来完成输入、输出、排序、文本处理等常规任务。例如,fmt包中的函数用来格式化输出和扫描输入。Println是fmt中一个基本的输出函数,它输出一个或多个用空格分隔的值,结尾使用一个换行符,这样看起来这些值是单行输出。

名为main的包比较特殊,它用来定义一个独立的可执行程序,而不是库。在main包中,函数main也是特殊的,不管在什么程序中,main做什么事情,它总是程序开始执行的地方。当然,main通常调用其他包中的函数来做更多的事情,比如fmt.Println。

我们需要告诉编译器源文件需要哪些包,用package声明后面的import来导入这些包。“hello,world”程序仅使用了一个来自于其他包的函数,而大多数程序可能导入更多的包。

你必须精确地导入需要的包。在缺失导入或存在不需要的包的情况下,编译会失败,这种严格的要求可以防止程序演化中引用不需要的包。

import声明必须跟在package声明之后。import导入声明后面,是组成程序的函数、变量、常量、类型(以func、var、const、type开头)声明。大部分情况下,声明的顺序是没有关系的。示例中的程序足够短,因为它只声明了一个函数,这个函数又仅仅调用了一个其他的函数。为了节省空间,在处理示例的时候,我们有时不展示package和import声明,但是它们存在于源文件中,并且编译时必不可少。

一个函数的声明由func关键字、函数名、参数列表(main函数为空)、返回值列表(可以为空)、放在大括号内的函数体组成,函数体定义函数是用来做什么的,这将在第5章详细介绍。

Go不需要在语句或声明后面使用分号结尾,除非有多个语句或声明出现在同一行。事实上,跟在特定符号后面的换行符被转换为分号,在什么地方进行换行会影响对Go代码的解析。例如,“{”符号必须和关键字func在同一行,不能独自成行,并且在x+y这个表达式中,换行符可以在+操作符的后面,但是不能在+操作符的前面。

Go对于代码的格式化要求非常严格。gofmt工具将代码以标准格式重写,go工具的fmt子命令使用gofmt工具来格式化指定包里的所有文件或者当前文件夹中的文件(默认情况下)。本书中包含的所有Go源代码文件都使用gofmt运行过,你应该养成对自己的代码使用gofmt工具的习惯。定制一个标准的格式,可以省去大量无关紧要的辩论,更重要的是,如果允许随心所欲的格式,各种自动化的源代码转换工具将不可用。

许多文本编辑器可以配置为每次在保存文件时自动运行gofmt,因此源文件总可以保持正确的形式。此外,一个相关的工具goimports可以按需管理导入声明的插入和移除。它不是标准发布版的一部分,可以通过执行下面的命令获取到:

 

对大多数用户来说,按照常规方式下载、编译包,执行自带的测试,查看文档等操作,使用go工具都可以实现,这将在10.7节详细介绍。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ubuntu下c语言hello world
1.首先用vi编写一个c语言程序文件,命令行输入:vi helloworld.c,建立一个名叫"helloworld.c"的文件 2.在文件中输入内容 #include int main() {     printf("hello world!");     return 0; } 3.命令模式下输入:wq,保存并退出 4.输入gcc helloworld.c,编译默认shengc生成名为a.out的执行文件,可以用gcc -o 编译生成其它名字的执行文件。
533 0
shell程序设计002
shell的语法: 变量-变量名前面加一个$符号来访问它的内容,再用echo命令将它的内容输出到终端上: read命令将用户的输入命令赋给一个变量,再有echo输出: 引号的使用: 新建一个脚本 vim variab...
573 0
理解C语言——从小菜到大神的晋级之路(2)——开发环境的选择和HelloWorld程序
视频观看:点击这里 一、常用系统及IDE简介        常言道,工欲善其事必先利其器。除了少数奇葩之外,大部分人应不会去使用记事本或者Word文档去编程吧?几乎所有编程语言都需要一个高效易用的开发环境,C语言也不例外。
1440 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4617 0
《C++语言入门经典》一第1章 初识C++——“Hello World!” 1.1 C++的历史背景
本节书摘来自华章出版社《C++语言入门经典》一书中的第1章,第1.1节,作者 郭鑫 顾彦玲,更多章节内容可以访问云栖社区“华章计算机”公众号查看
1755 0
阿里云服务器远程登录用户名和密码的查询方法
阿里云服务器远程连接登录用户名和密码在哪查看?阿里云服务器默认密码是什么?云服务器系统不同默认用户名不同
846 0
shell程序设计004
函数: 程序开始定义了yes_or_no函数,函数内容写在{}里面,if后面调用函数并将参数 $1传给函数执行,根据返回值执行后面的语句。
615 0
Linux 的使用基础---Shell程序设计
  Shell是Linux系统中的一个重要的层次,它是用户与系统交互作用的界面.Shell除了作为命令解释程序以外,还是一种高级程序设计语言。利用Shell程序设计语言可以编写出功能很强、但代码简单的程序。
799 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载