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节详细介绍。

时间: 2024-08-31 18:05:56

Go程序设计语言1.1 hello,world的相关文章

【软考教程】程序设计语言基础

继续软考教程的学习,在第1章,我们主要是对计算机的组成和工作原理做了一定了解,可以说,在他的带领下,我们对计算机硬件方面的知识,有了更加坚实的基础. 第2章,程序设计语言基础知识.不看内容,光从标题来看,并不会觉得陌生."程序设计语言",至今,我们已经接触过不止一种了,从最初的VB.到后来的VB.NET.C#.C++,软考前个阶段,我们还见到了早有耳闻的Java世界. 那么,下面就跟随着"设计语言"的脚步,一起发现编程路上美丽的风光吧. 想要对程序设计语言有个宏观上

最受欢迎的十大程序设计语言排行榜更新(10月版)

在最受欢迎的程序设计语言排行榜上最值得关注的是Ruby从一年前的第十三名上升到第十位.无论如何,按照TIOBE程序设计区域指标的数据,这是个神奇的事情.TIOBE程序设计区域指标用于标识程序设计语言的普及度,并根据世界范围的熟练工程师.课程和第三方供应商对程序设计语言的实际使用率,每月更新一次数据. 流行的搜索引擎Google. MSN和Yahoo!都被用于计算此指标的评估结果,根据TIOBE所言.TIOBE在它的网站上发出如下告诫: 注意:TIOBE指标不是为了衡量哪个程设计语言是最好的或者是

c语言编程-这段C程序设计语言书上的代码,运行后按回车只换行并没有输出最长的行,为什么

问题描述 这段C程序设计语言书上的代码,运行后按回车只换行并没有输出最长的行,为什么 #include#define MAXLINE 1000int getline(char line[]int maxline);void copy(char to[]char from[]);main(){int len;int max;char line[MAXLINE];char longest[MAXLINE];max = 0;while ((len = getline(lineMAXLINE))>0)i

Go程序设计语言导读

前 言 The Go Programming Language "Go是一种开源的程序设计语言,它意在使得人们能够方便地构建简单.可靠.高效的软件."(来自Go官网golang.org) Go在2007年9月形成构想,并于2009年11月发布,其发明人是Robert Griesemer.Rob Pike和Ken Thompson,这几位都任职于Google.该语言及其配套工具集使得编译和执行既富有表达力又高效,而且使得程序员能够轻松写出可靠.健壮的程序. Go和C从表面上看起来相似,而

《程序分析方法》——1.2 程序设计语言的发展趋势

1.2 程序设计语言的发展趋势 Turbo Pascal编译器的主要编写者以及.NET框架.Delphi和C#之父--Anders Hejlsberg认为,相对于近几十年来计算机硬件的飞速发展,程序语言的改进不是很明显,主要的原因在于人们更关注"工具"."框架"或"开发方法"的变革和创新,而忽略了语言的改进.程序设计离不开程序设计语言,程序设计语言与"工具"."框架"或"开发方法"等一样

Python v3.2发布 面向对象直译式计算机程序设计语言

Python是一种面向对象.直译式计算机程序设计语言,也是一种http://www.aliyun.com/zixun/aggregation/17547.html">功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所有的操作系统中运行.目前,基于这种语言的相关技术正在飞速的发展,用户数量急剧扩大,相关的资源非常多. 虽然Python可能被粗略地分类为"脚本语言"(script lan

为什么会有这么多种程序设计语言?

传说人类建造通天塔触怒上帝,上帝施法使人类语言混乱彼此之间无法交流.这就是说各种各样的语言其实就是祸乱之源--只会导致交流的不便.可是看看如今的程 序设计语言的数量,你会怀疑人类是否又在造"通天塔"了?真的有这么多语言的必要吗?我到底要学习多少种程序设计语言才够用呢? 根据维基的资料,可以称得上相对"主流"(有人用.有文档)的程序设计语言至少有600种, 还有大量的商业化失败.实用性不高.语言小众(这里的"语言"指的是编码的语言,一般的程序设计语

《Python语言程序设计》——1.3 程序设计语言

1.3 程序设计语言 关键点:计算机程序,又称为软件,是告诉计算机要做什么的指令集. 计算机并不理解人类的语言,所以程序必须用计算机使用的语言来书写.现在有几百种程序设计语言,开发它们对人们来说可以让程序设计过程更加简单.但是,所有的程序必须被转换成计算机能够理解的语言.1.3.1 机器语言 计算机自己的语言(会因计算机的种类不同而有所不同)是它的机器语言--一套内嵌在计算机内的原始指令集.这些指令以二进制代码的形式存在,所以如果给计算机一条用它自己的语言编写的程序,必须输入二进制码的指令.例如

《程序分析方法》——1.1 程序设计语言发展的四个阶段

1.1 程序设计语言发展的四个阶段 到目前为止,程序设计语言的发展经过了机器语言.汇编语言.高级语言.第四代语言四个阶段,每一个阶段都使程序设计的效率大大提高.我们常常把机器语言称为第 一代程序设计语言,把汇编语言称为第二代程序设计语言,把高级语言称为第三代程序设计语言,把最新的程序设计语言称为第四代语言.1.1.1 机器语言 机器语言是计算机能直接识别和执行的一组机器指令的集合.它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能.一条机器指令就是机器语言的一个语句,它是一组有意义的二进

《C语言程序设计》一 1.1 程序和程序设计语言

1.1 程序和程序设计语言 1.1.1 程序与程序设计 程序并不是计算机程序设计中独有的概念,在日常生活中我们也常见到这个词,例如一个会议的日程.一场演出的节目单等,这些程序都是由人的一项项的活动组成的,身处其中时通常需要按部就班地一步步完成一系列动作,有序地完成每一项活动也就实现了程序的目标.可以说,对这种活动过程细节动作的描述就是一个"程序". 日常生活中的程序性活动与计算机里的程序执行类似,这一点有助于我们理解计算机的工作方式.日常生活中的程序性活动里有更多变数,许多事情并不是完