Random Number 随机数
Go中的math/rand包提供伪随机数的生成。
如下所示,rand.Intn返回指定范围的随机整数,0<=n<100。rand.Float64返回随机浮点数f,范围为0.0<=f<1.0,这可用于生成在其他范围内的随机浮点数,例如5.0<=f<10.0。
默认的数字生成器具有确定性的,即,默认情况下每次都会生成相同的随机序列。若要生成不同的随机序列,需要为随机序列指定一个不同的随机种子。
请注意,对于要保密的随机数请使用crypto/rand确保安全性。
rand.NewSource生成随机源,rand.New生成随机对象,调用随机对象的方法,就像调用rand包中的函数一样。如果源设置的种子是相同的数字,则它产生相同随机数序列。

结果:
$ go run random-numbers.go
81,87
0.6645600532184904
7.123187485356329,8.434115364335547
0,28
5,87
5,87
Number Parsing 数字解析
在许多程序中,从字符串中解析数字是一项基本且常见的任务,即把字符串数字转换成数值数字;下面介绍如何在Go中进行解析。
内置包strconv提供了转换函数。函数ParseFloat,这个64表示要解析成多少位的精度。对于ParseInt,0表示从字符串中推断出数字的基。64要求结果精度为64位。ParseInt将自动识别十六进制格式的数字。ParseUint为无符号版本。Atoi是10进制数字解析的快捷函数。Parse函数在不合法的输入时返回错误。

结果:
$ go run number-parsing.go
1.234
123
456
789
135
strconv.ParseInt: parsing "wat": invalid syntax
URL Parsing URL解析
URL提供了一种统一的资源定位的方法。下面是如何在Go中解析URL。
我们将解析这个示例URL,它包括协议scheme、身份验证信息authentication、主机host、端口port、路径path、查询参数query params和查询片段query fragment。使用函数url.Parse解析URL后,检测以确保没有错误发生。
- 字段Scheme为协议。
- 字段User包含所有身份验证信息;调用方法Username和Password分别获得用户名和密码。
- 字段Host包含主机名和端口(如果存在),调用方法net.SplitHostPort来提取它们。
- 字段Path提取路径。
- 字段Fragment提取#后面片段。
- 若要获取k=v格式的字符串查询参数,请使用字段RawQuery。还可以使用url.ParseQuery将字符串查询参数解析为映射。解析后的查询参数映射的值是字符串切片,因此如果只需要第一个值,请索引到[0]中。

结果:
$ go run url-parsing.go
postgres
user:pass
user
pass
host.com:5432
host.com
5432
/path
f
k=v
map[k:[v]]
v