From b29dde3761a99130d712130fd7ba7b30fe806f98 Mon Sep 17 00:00:00 2001 From: Zhanming Qi Date: Tue, 18 Jun 2013 10:05:21 +0800 Subject: [PATCH] add 4.8 and 4.9 --- eBook/04.8.md | 54 +++++++++++++++ eBook/04.9.md | 125 ++++++++++++++++++++++++++++++++++ eBook/images/4.4.9_fig4.4.png | Bin 0 -> 12526 bytes eBook/images/4.4.9_fig4.5.png | Bin 0 -> 14122 bytes 4 files changed, 179 insertions(+) create mode 100644 eBook/04.8.md create mode 100644 eBook/04.9.md create mode 100644 eBook/images/4.4.9_fig4.4.png create mode 100644 eBook/images/4.4.9_fig4.5.png diff --git a/eBook/04.8.md b/eBook/04.8.md new file mode 100644 index 0000000..931c19b --- /dev/null +++ b/eBook/04.8.md @@ -0,0 +1,54 @@ +#4.8 时间和日期 + +时间包给我们一个数据类型类型**time.Time** (当一个值使用) 以及显示和测量时间和日期的功能函数。 + +当前的时间可以使用**time.Now()**,想得到时间的一部分,可以使用 t.Day(),t.Minute()等等;你也可以使用自己的时间格式化如: **fmt.Printf("%02d.%02d.%4d\n”, t.Day(), t.Month(), t.Year())** // 例如:21.07.2011 + +Duration类型表示连续时间的两个时刻的纳秒数。Location类型映射了那个时区的时间,UTC表示通用协调世界时。 + +有一个预定义的函数`func (t Time) Format(layout string) string` 可以根据一个格式字符串,将一个时间 t 格式化为一个字符串,格式使用预定义的格式如 `time.ANSIC` 或 `time.RFC822`。 + +一般的格式化,定义了标准的时间格式,它将被用于描述被格式化的时间格式;这看来很奇怪,但是例子可以使他更清晰: + +fmt.Println(t.Format(“02 Jan 2006 15:04”)) // outputs now: 21 Jul 2011 10:31 + +(参见程序 time.go,更多信息在 http://golang.org/pkg/time/) + +Listing 4.20—time.go : + + package main + import ( + “fmt” + “time” + ) + + var week time.Duration + func main() { + t := time.Now() + fmt.Println(t) // e.g. Wed Dec 21 09:52:14 +0100 RST 2011 + fmt.Printf(“%02d.%02d.%4d\n”, t.Day(), t.Month(), t.Year()) + // 21.12.2011 + t = time.Now().UTC() + fmt.Println(t) // Wed Dec 21 08:52:14 +0000 UTC 2011 + fmt.Println(time.Now()) // Wed Dec 21 09:52:14 +0100 RST 2011 + // calculating times: + week = 60 * 60 * 24 * 7 * 1e9 // must be in nanosec + week_from_now := t.Add(week) + fmt.Println(week_from_now) // Wed Dec 28 08:52:14 +0000 UTC 2011 + // formatting times: + fmt.Println(t.Format(time.RFC822)) // 21 Dec 11 0852 UTC + fmt.Println(t.Format(time.ANSIC)) // Wed Dec 21 08:56:34 2011 + fmt.Println(t.Format(“02 Jan 2006 15:04”)) // 21 Dec 2011 08:52 + s := t.Format(“20060102”) + fmt.Println(t, “=>”, s) + // Wed Dec 21 08:52:14 +0000 UTC 2011 => 20111221 + } + +输出在每行 `//` 的后面。 + +如果你需要让应用程序中经过一定时间或定期发生一些事情(事件处理的一个特例)`time.After` `time.Ticker` 是你所需要的:§14.5将讨论这些有趣的事情。还有一个的功能 `time.Sleep(Duration d)`,它会暂停当前进程(在goroutine中,参见§14.1)一个持续时间 d。 + +##链接 +- [目录](directory.md) +- 上一节:[strings 和 strconv 包](04.7.md) +- 下一节:[指针](04.9.md) \ No newline at end of file diff --git a/eBook/04.9.md b/eBook/04.9.md new file mode 100644 index 0000000..6b4052d --- /dev/null +++ b/eBook/04.9.md @@ -0,0 +1,125 @@ +#4.9 指针 + +不像 Java 和 .NET,Go 语言为程序员提供了控制数据结构的指针;但是,你不能进行指针计算。通过给程序员控制基本内存布局,Go 语言允许你控制特定集合的数据结构,分配的数量,和内存访问模式,这些对构建性能良好的系统是非常重要的:如果你想要做的系统编程,操作系统和网络,指针对性能表现是非常重要且不可缺少的。 + +由于指针对当代面向对象编程的程序员是未知的,我们将在这里解释他们,并在接下来的章节中继续深入。 + +程序在内存中存储它的值,每个内存块(或词)有一个地址,通常用十六进制数表示,如 0x6b0820 或 0xf84001d7f0 + +Go 语言的地址操作符是 &,放到一个变量前,会返回我们这个变量的内存地址。 + +如下的代码片段(参见 Listing 4.9 pointer.go)输入如下例:“An integer: 5, its location in memory: 0x6b0820(这个值随着你每次运行程序而变化) + + var i1 = 5 + fmt.Printf(“An integer: %d, it’s location in memory: %p\n”, i1, &i1) + +这个地址可以存储在一个叫指针的特殊数据类型中,在本例中这是一个指向 int 的指针,这里是 i1:这里使用 *int 表示。如果我们想调用指针 intP,我们可以这样声明它: + + var intP *int + +然后,下面这样写是正确的:intP = &i1, intP 指向 i1。 + +(因为它声明了一个指针以 %p 这个格式化字符串表示) + +intP 存储了 i1 的内存地址;它指向了 i1 的位置,它引用了变量 i1。 + +一个指针变量可以包含另一个值得内存地址:它指向那个值的内存地址,在 32 位机器上占用 4 个字节,在 64 位机器上占用 8 个字节,并且与它所指向的值的大小无关。当然,可以声明指针指向任何类型的值,表明它的原始性或结构性; 在类型的值卡面加 * 号(前缀),这里的 * 号是一个类型更改器。使用一个指针引用一个值被称为间接引用。 + +一个新的被定义的指针,当没有分配给它变量时,他的值是 nil 。 + +一个指针变量通常缩写为 ptr 。 + +!!在一个表达式如 var p *type 总是在 * 号和指针名间留有一个空间 - var p*type 是语法正确的,但是在更复杂的表达式中,它容易被误认为是一个乘法表达式!! + +符号 * 可以放在一个指针前,如 *intP,那么它将得到这个指针指向地址的值;它被称为反引用(或者 contents 或者间接引用)操作符;另一种说法是指针转移。 + +对于多个变量 var, 如下是正确的: var == *(&var) + +现在,我们能理解整个的pointer.go程序和他的输出: + +Listing 4.21—[pointer.go](examples/chapter_4/pointer.go): + + package main + import "fmt" + func main() { + var i1 = 5 + fmt.Printf("An integer: %d, its location in memory: %p\n", i1, &i1) + var intP *int + intP = &i1 + fmt.Printf("The value at memory location %p is %d\n", intP, *intP) + } + +输出: + + An integer: 5, its location in memory: 0x24f0820 + The value at memory location 0x24f0820 is 5 + +我们可以表示内存的使用情况如下: + +![](images/4.4.9_fig4.4.png?raw=true) + +string_pointer.go 个我们展示了指针对string的例子。 + +它展示了分配一个新的值给 *p 并且更改这个变量自己的值(这里是一个字符串) + +Listing 4.22—[string_pointer.go](examples/chapter_4/string_pointer.go): + + package main + import "fmt" + func main() { + s := "good bye" + var p *string = &s + *p = "ciao" + fmt.Printf("Here is the pointer p: %p\n", p) // prints address + fmt.Printf("Here is the string *p: %s\n", *p) // prints string + fmt.Printf("Here is the string s: %s\n", s) // prints same string + } + +输出: + + Here is the pointer p: 0x2540820 + Here is the string *p: ciao + Here is the string s: ciao + +通过对 *p 赋另一个值来更改“对象”, s 也会更改。 + +内存示意图如下: + +![](images/4.4.9_fig4.5.png?raw=true) + +注意:你不能得到一个文字或常量的地址,如下代码片段: + + const i = 5 + ptr := &i //error: cannot take the address of i + ptr2 := &10 //error: cannot take the address of 10 + +所以 Go 语言,和其他低级(系统)语言,如 C, C++ 和 D 语言一样,有指针的概念。但是对指针进行计算(称为指针运算,例如 pointer + 2, 移动指向字符串的字节数,或指向一个数组的位置),这样做在 C 语言里经常发生内存访问错误导致程序崩溃,为了语言的内存安全,在 Go 语言中是不允许的。Go 语言的指针更像引用,如 Java, C# 和 VB.NET 。 + +所以: c = *p++ 在 Go 语言的代码中是不允许的。 + +一个指针的高级应用是你可以传递一个引用到一个变量(如一个函数的参数),这样不会传递变量的拷贝。指针传递是很廉价的,只有 4 个或 8 个字节。当程序在工作中需要占用大量的内存,或很多变量,或者两者都有,使用指针会减少内存占用和提高效率。被指向的变量也保存在内存中,至少使用一个变量指向他们,所以从它们被创建开始,他们的周期范围是独立的。 + +另一方面(虽然不太可能),因为一个指针导致的间接引用(一个进程执行了另一个地址),频繁使用会导致性能下降。 + +指针也可以指向另一个指针,并且这种可以任意深度的嵌套,导致你可以有多级的间接引用,但在大多数情况这会使你的代码结构不清晰。 + +如我们所见,在大多数情况下 Go 语言可以是程序员轻松创建指针,并且隐藏间接引用,如,自动反向引用。 + +对一个空指针反向引用,如下面的 2 行(参见程序 testcrash.go),是不合法的,并且会使程序崩溃: + +Listing 4.23 [testcrash.go](examples/chapter_4/testcrash.go): + + package main + func main() { + var p *int = nil + *p = 0 + } + // in Windows: stops only with: + // runtime error: invalid memory address or nil pointer dereference + +问题 4.2:列举 Go 语言中使用 * 号的所有用法 + +##链接 +- [目录](directory.md) +- 上一节:[时间和日期](04.8.md) +- 下一节:[控制结构](05.0.md) \ No newline at end of file diff --git a/eBook/images/4.4.9_fig4.4.png b/eBook/images/4.4.9_fig4.4.png new file mode 100644 index 0000000000000000000000000000000000000000..a5300df00af31625a17882538aaf4beea8ff878a GIT binary patch literal 12526 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 fw@3Xy5YBZJ9}C8Rb>(d%IuW+5H1M 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 CYNyKp literal 0 HcmV?d00001