|
@@ -16,7 +16,6 @@ Gob 文件或流是完全自描述的:里面包含的所有类型都有一个
|
|
|
```go
|
|
```go
|
|
|
type T struct { X, Y, Z int }
|
|
type T struct { X, Y, Z int }
|
|
|
var t = T{X: 7, Y: 0, Z: 8}
|
|
var t = T{X: 7, Y: 0, Z: 8}
|
|
|
-
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
而在接收者这边可以用一个结构体 U 类型的变量 u 来接收这个值:
|
|
而在接收者这边可以用一个结构体 U 类型的变量 u 来接收这个值:
|
|
@@ -24,7 +23,6 @@ var t = T{X: 7, Y: 0, Z: 8}
|
|
|
```go
|
|
```go
|
|
|
type U struct { X, Y *int8 }
|
|
type U struct { X, Y *int8 }
|
|
|
var u U
|
|
var u U
|
|
|
-
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
在接收者中,X 的值是7,Y 的值是0(Y的值并没有从 t 中传递过来,因为它是零值)
|
|
在接收者中,X 的值是7,Y 的值是0(Y的值并没有从 t 中传递过来,因为它是零值)
|
|
@@ -81,7 +79,6 @@ func main() {
|
|
|
fmt.Printf("%q: {%d,%d}\n", q.Name, *q.X, *q.Y)
|
|
fmt.Printf("%q: {%d,%d}\n", q.Name, *q.X, *q.Y)
|
|
|
}
|
|
}
|
|
|
// Output: "Pythagoras": {3,4}
|
|
// Output: "Pythagoras": {3,4}
|
|
|
-
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
示例 12.19 [gob2.go](examples/chapter_12/gob2.go) 编码到文件:
|
|
示例 12.19 [gob2.go](examples/chapter_12/gob2.go) 编码到文件:
|
|
@@ -115,7 +112,7 @@ func main() {
|
|
|
pa := &Address{"private", "Aartselaar","Belgium"}
|
|
pa := &Address{"private", "Aartselaar","Belgium"}
|
|
|
wa := &Address{"work", "Boom", "Belgium"}
|
|
wa := &Address{"work", "Boom", "Belgium"}
|
|
|
vc := VCard{"Jan", "Kersschot", []*Address{pa,wa}, "none"}
|
|
vc := VCard{"Jan", "Kersschot", []*Address{pa,wa}, "none"}
|
|
|
- // fmt.Printf("%v: \n", vc) // {Jan Kersschot [0x126d2b80 0x126d2be0] none}:
|
|
|
|
|
|
|
+ // fmt.Printf("%v: \n", vc) // {Jan Kersschot [0x126d2b80 0x126d2be0] none}:
|
|
|
// using an encoder:
|
|
// using an encoder:
|
|
|
file, _ := os.OpenFile("vcard.gob", os.O_CREATE|os.O_WRONLY, 0)
|
|
file, _ := os.OpenFile("vcard.gob", os.O_CREATE|os.O_WRONLY, 0)
|
|
|
defer file.Close()
|
|
defer file.Close()
|
|
@@ -125,16 +122,14 @@ func main() {
|
|
|
log.Println("Error in encoding gob")
|
|
log.Println("Error in encoding gob")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
**练习 12.8**:[degob.go](exercises/chapter_12/degob.go):
|
|
**练习 12.8**:[degob.go](exercises/chapter_12/degob.go):
|
|
|
|
|
|
|
|
写一个程序读取 vcard.gob 文件,解码并打印它的内容。
|
|
写一个程序读取 vcard.gob 文件,解码并打印它的内容。
|
|
|
|
|
|
|
|
-
|
|
|
|
|
## 链接
|
|
## 链接
|
|
|
|
|
|
|
|
- [目录](directory.md)
|
|
- [目录](directory.md)
|
|
|
- 上一节:[XML 数据格式](12.10.md)
|
|
- 上一节:[XML 数据格式](12.10.md)
|
|
|
-- 下一节:[Go 中的密码学](12.12.md)
|
|
|
|
|
|
|
+- 下一节:[Go 中的密码学](12.12.md)
|