mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 06:19:44 +08:00
@@ -4,7 +4,7 @@
|
||||
|
||||
对于整数的高精度计算 Go 语言中提供了 big 包。其中包含了 math 包:有用来表示大整数的 `big.Int` 和表示大有理数的 `big.Rat` 类型(可以表示为 2/5 或 3.1416 这样的分数,而不是无理数或 π)。这些类型可以实现任意位类型的数字,只要内存足够大。缺点是更大的内存和处理开销使它们使用起来要比内置的数字类型慢很多。
|
||||
|
||||
大的整型数字是通过 `big.NewInt(n)` 来构造的,其中 n 位 int64 类型整数。而大有理数是用过 `big.NewRat(N,D)` 方法构造。N(分子)和 D(分母)都是 int64 型整数。因为 Go 语言不支持运算符重载,所以所有大数字类型都有像是 `Add()` 和 `Mul()` 这样的方法。它们作用于作为 receiver 的整数和有理数,大多数情况下它们修改 receiver 并以 receiver 作为返回结果。因为没有必要创建 `big.Int` 类型的临时变量来存放中间结果,所以这样的运算可通过内存链式存储。
|
||||
大的整型数字是通过 `big.NewInt(n)` 来构造的,其中 n 为 int64 类型整数。而大有理数是用过 `big.NewRat(N,D)` 方法构造。N(分子)和 D(分母)都是 int64 型整数。因为 Go 语言不支持运算符重载,所以所有大数字类型都有像是 `Add()` 和 `Mul()` 这样的方法。它们作用于作为 receiver 的整数和有理数,大多数情况下它们修改 receiver 并以 receiver 作为返回结果。因为没有必要创建 `big.Int` 类型的临时变量来存放中间结果,所以这样的运算可通过内存链式存储。
|
||||
|
||||
示例 9.2 [big.go](examples/chapter_9/big.go):
|
||||
|
||||
|
@@ -1,15 +1,15 @@
|
||||
# 9.6 为自定义包使用 godoc
|
||||
|
||||
godoc工具(第 3.6 节)在显示自定义包中的注释也有很好的效果:注释必须以 `//`` 开始并无空行放在声明(包,类型,函数)前。godoc 会为每个文件生成一系列的网页。
|
||||
godoc工具(第 3.6 节)在显示自定义包中的注释也有很好的效果:注释必须以 `//` 开始并无空行放在声明(包,类型,函数)前。godoc 会为每个文件生成一系列的网页。
|
||||
|
||||
例如:
|
||||
|
||||
- 在 do_examples 目录下我们有第 11.7 节中的用来排序的 go 文件,文件中有一些注释(文件需要未编译)
|
||||
- 命令行下进入目录下并输入命令:
|
||||
|
||||
godoc -http =:6060 -paht="."
|
||||
godoc -http =:6060 -goroot="."
|
||||
|
||||
(`.` 是指当前目录,-path 参数可以是 `/path/to/my/package1` 这样的形式指出 package1 在你源码中的位置或接受用冒号形式分隔的路径,无根目录的路径为相对于当前目录的相对路径)
|
||||
(`.` 是指当前目录,-goroot 参数可以是 `/path/to/my/package1` 这样的形式指出 package1 在你源码中的位置或接受用冒号形式分隔的路径,无根目录的路径为相对于当前目录的相对路径)
|
||||
|
||||
- 在浏览器打开地址:http://localhost:6060
|
||||
|
||||
|
@@ -16,7 +16,7 @@ go install 使用了 GOPATH 变量(详见第 2.2 节)。
|
||||
|
||||
使用命令安装:`go install tideland-cgl.googlecode.com/hg`。
|
||||
|
||||
可执行文件 `hg.a` 将被放到 `$GOROOT/pkg/linux_amd64/tideland-cgl.googlecode.com` 目录下,源码文件被放置在 `$GOROOT/src/tideland-cgl.googlecode.com/hg` 目录下,同样有个 `hg.a` 放置在 `_obj` 的子目录下。
|
||||
可执行文件 `hg.a` 将被放到 `$GOPATH/pkg/linux_amd64/tideland-cgl.googlecode.com` 目录下,源码文件被放置在 `$GOPATH//src/tideland-cgl.googlecode.com/hg` 目录下,同样有个 `hg.a` 放置在 `_obj` 的子目录下。
|
||||
|
||||
现在就可以在 go 代码中使用这个包中的功能了,例如使用包名 cgl 导入:
|
||||
|
||||
|
@@ -111,14 +111,15 @@ func main() {
|
||||
|
||||
然后在这个目录下输入 `go install`。
|
||||
|
||||
另外复制 uc.a 到 uc 目录并创建一个 Makefile(2) 并写入文本包含在 `$GOROOT/src/Make.inc`:
|
||||
另外复制 uc.a 到 uc 目录并创建一个 Makefile(2) 并写入文本:
|
||||
|
||||
```
|
||||
TARG=ucmain
|
||||
GOFILES=\
|
||||
include $GOROOT/src/Make.inc
|
||||
TARG=ucmain
|
||||
GOFILES=\
|
||||
ucmain.go\
|
||||
|
||||
include $GOROOT/src/Make.cmd
|
||||
include $GOROOT/src/Make.cmd
|
||||
```
|
||||
|
||||
执行 gomake 编译 `ucmain.go` 到 ucmain 目录
|
||||
|
Reference in New Issue
Block a user