Fork me on GitHub

Go语言开发-字符串-格式化整数

3.5.2.格式化整数
现在我们将介绍整数的格式化,从二进制(基数为2)的输出开始。
第一个格式(%b)使用了%b(二进制)格式化动作并使用尽可能少的数字将整数以二进制的形式输出。第二个格式(%9b)指定要输出的长度为9个字符(如有必要将超出此长度来避免截断),且默认右对齐。第三个格式(%-9b)使用“-”修饰符即输出设置为左对齐。第四个格式(%09b)使用0作为填充符,第五个格式(% 9b)使用空格作为填充符。

Go语言开发-字符串-使用fmt包来格式化字符串

3.5.使用fmt包来格式化字符串 Go语言标准库中的fmt包提供了以字符串形式将数据输出到控制台、文件、其他满足io.Writer接口的值或其他字符串的打印函数,表3.3列出了这些函数。某些打印函数会返回一个错误值,当将数据打印到控制台时,通常我们会忽略该返回值,但在将数据打印到文件或网络中时,我们应始终检查该错误值。

Go语言开发-字符串-字符串索引与切片

3.4字符串的索引和切片
正如表3.2所示,Go语言支持字符串切片语法,它是Python切片语法的一个子集。该语法可以用于任意类型的切片,我们将在第4章使用到它。由于Go语言将字符串保存为UTF-8编码的字节,所以我们必须小心只在字符边界范围内进行切片。这在我们仅使用7位ASCII编码的情况下非常简单,因为一个字节表示一个字符,但是对于非ASCII编码的文本将更具挑战性,因为这些字符可能由一个或者多个字节表示。通常我们可以简单的使用for…range循环逐字符的遍历字符串,而不是将其切片

Go语言开发-字符串-字符和字符串

3.3.字符和字符串
在Go语言中,字符有两种不同的表示方式(可以很容易地互相转换)。单个字符可以用一个rune(或者int32)来表示。从现在开始,我们交替使用术语“字符”、“码点”、“Unicode字符”、“Unicode码点”来表示包含一个字符的rune(或者int32)。Go语言的字符串被表示成一个包含0个或多个字符且每个字符由一个或多个UTF-8编码的字节表示的序列。

Go语言开发-字符串-比较字符串

3.2.比较字符串
如前所述,Go语言字符串支持常规的比较操作符(<、<=、==、!=、>、>=),参见表2.3。比较操作符在内存中是逐字节的比较字符串。比较操作可以直接使用,例如,比较两个字符串是否相等,也可以间接使用,例如,对已经排好序的[]string使用<操作符比较其含有的字符串。

Go语言开发-字符串-常量、操作符和转义

3.1.常量、操作符和转义
字符串常量使用双引号(”)或者反引号(’)来创建。双引号用于创建可解析的字符串常量,这些字符串支持表3.1列出的转义字符,但是不能跨行。反引号用于创建原生的字符串常量,这些字符串可以可以跨多个行;它们不支持任何转义序列且可以包含除了反引号之外的任何字符。可解析的字符串常量是最常使用的,但是使用原生的字符串常量来编写多行消息、HTML和正则表达式是非常有用的。

Go语言开发-布尔与数值类型-实现一个HTTP服务器

2.4.2.实现一个基本的HTTP服务器
这个statistics程序仅有一个web页面,并运行在本机上,它的main()函数如下:
Http.HandleFunc() 函数接受两个参数:路径和当该路径被请求时要调用的函数的引用。该函数必须具有签名 func(http.ResponseWriter, * http. Request)。如果我们愿意,我们可以注册多个“路径-函数”对。这里我们只注册了路径/(即web程序的主页)和一个自定义的homePage() 函数。

Go语言开发-布尔与数值类型-实现Statistics函数

实现一个简单的统计函数
为方便起见,我们创建了一个聚合类型用于保存用户输入的数据以及我们的两个统计结果。
Go的结构体类似于C语言的结构体或者Java里只有public数据成员且没有方法的类,但是不像C++语言的结构体那样,因为它并不是一个类。正如我们将要看到的,Go语言的结构体对聚合和嵌入提供非常出色的支持,这是Go语言面向对象编程的核心。

程序员幽默6则

0. 据说有一位软件工程师,一位硬件工程师和一位项目经理同坐车参加研讨会。不幸在从盘山公路下山时坏在半路上了。于是两位工程师和一位经理就如何修车的问题展开了讨论。硬件工程师说:“我可以用随身携带的瑞士军刀把车坏的部分拆下来,找出原因,排除故障。”项目经理说:“根据经营管理学,应该召开会议,根据问题现状写出需求报告,制订计划,编写日程安排,逐步逼近,alpha测试,beta1测试和beta2测试解决问题。”软件工程说:“咱们还是应该把车推回山顶再开下来,看看问题是否重复发生。”

Go语言开发-布尔与数值类型-例子Statistics

2.4.例子:Statistics
本示例 (和后面的练习) 的目的是为大家提供Go编程的一些背景知识。就像第一章中的那样,本示例使用了一些还没有完全讲解的Go语言特性。因为我们提供了一些简单解释和交叉引用,所以这应该不是大问题。本示例还介绍了Go语言标准库中的net/http包的一些简单用法,使用该包我们可以非常容易地创建一个HTTP服务器。

Go语言开发-布尔与数值类型-浮点类型

2.3.2.浮点类型
Go语言提供了两种类型的浮点数和两种类型的复数,它们的名字及取值范围如表2.7所示。Go语言中的浮点数广泛使用IEEE-754格式表示(http://en.wikipedia.org/wiki/IEEE_754-2008)。该格式也是很多微型处理器和浮点数单元所使用的原生格式,所以在大多数情况下Go语言能够直接利用硬件的浮点数支持。

Go语言开发-布尔与数值类型-整型

2.3.1.整型
Go语言提供了11种整型,5种有符号的和5种无符号的,再加上1种用于存储指针的类型——它们的名字和值在表2.5中给出。此外,Go语言允许使用byte来作为无符号uint8类型,并且使用单个字符(即Unicode码点)的时候提倡使用rune来替代int32类型。在大多数的情况下,我们通常只需要一种整型int。它适用于循环计数器、数组和切片索引,以及所有通用整型运算;通常该整型的处理速度也是最快的