mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 06:36:43 +08:00
CH11.6 OK
This commit is contained in:
@@ -26,4 +26,4 @@ if sv, ok := v.(Stringer); ok {
|
|||||||
|
|
||||||
- [Ŀ¼](directory.md)
|
- [Ŀ¼](directory.md)
|
||||||
- <20><>һ<EFBFBD>£<EFBFBD>[11.4 <20><><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>type-switch](11.4.md)
|
- <20><>һ<EFBFBD>£<EFBFBD>[11.4 <20><><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6>type-switch](11.4.md)
|
||||||
- <20><>һ<EFBFBD>ڣ<EFBFBD>[11.6 TODO](11.6.md)
|
- <20><>һ<EFBFBD>ڣ<EFBFBD>[11.6 ʹ<EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>](11.6.md)
|
92
eBook/11.6.md
Normal file
92
eBook/11.6.md
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
# 11.6 ʹ<>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD>
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD> 10.6.3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> methodset1.go <20><><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><DAB1><EFBFBD><EFBFBD>ϵķ<CFB5><C4B7><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>Dz<EFBFBD><C7B2><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>뻹<EFBFBD><EBBBB9>ֵ<EFBFBD>ġ<EFBFBD><C4A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD>ֵʱ<D6B5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е㸴<D0B5>ӣ<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>ǽӿڱ<D3BF><DAB1><EFBFBD><EFBFBD>д洢<D0B4>ľ<EFBFBD><C4BE><EFBFBD>ֵ<EFBFBD>Dz<EFBFBD><C7B2><EFBFBD>Ѱַ<D1B0>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F3A1A3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
ʾ<EFBFBD><EFBFBD> 11.5 methodset2.go:
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
type List []int
|
||||||
|
|
||||||
|
func (l List) Len() int {
|
||||||
|
return len(l)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (l *List) Append(val int) {
|
||||||
|
*l = append(*l, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
type Appender interface {
|
||||||
|
Append(int)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CountInto(a Appender, start, end int) {
|
||||||
|
for i := start; i <= end; i++ {
|
||||||
|
a.Append(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
type Lener interface {
|
||||||
|
Len() int
|
||||||
|
}
|
||||||
|
|
||||||
|
func LongEnough(l Lener) bool {
|
||||||
|
return l.Len()*10 > 42
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// A bare value
|
||||||
|
var lst List
|
||||||
|
// compiler error:
|
||||||
|
// cannot use lst (type List) as type Appender in argument to CountInto:
|
||||||
|
// List does not implement Appender (Append method has pointer receiver)
|
||||||
|
// CountInto(lst, 1, 10)
|
||||||
|
if LongEnough(lst) { // VALID:Identical receiver type
|
||||||
|
fmt.Printf("- lst is long enough\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
// A pointer value
|
||||||
|
plst := new(List)
|
||||||
|
CountInto(plst, 1, 10) //VALID:Identical receiver type
|
||||||
|
if LongEnough(plst) {
|
||||||
|
// VALID: a *List can be dereferenced for the receiver
|
||||||
|
fmt.Printf("- plst is long enough\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**<EFBFBD><EFBFBD><EFBFBD><EFBFBD>**
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD> `lst` <20>ϵ<EFBFBD><CFB5><EFBFBD> `CountInto` ʱ<>ᵼ<EFBFBD><E1B5BC>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ `CountInto` <20><>Ҫһ<D2AA><D2BB> `Appender`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> `Append` ֻ<><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ϡ<EFBFBD> <20><> `lst` <20>ϵ<EFBFBD><CFB5><EFBFBD> `LongEnough` <20>ǿ<EFBFBD><C7BF>Ե<EFBFBD><D4B5><EFBFBD>Ϊ 'Len' <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ϡ<EFBFBD>
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD> `plst` <20>ϵ<EFBFBD><CFB5><EFBFBD> `CountInto` <20>ǿ<EFBFBD><C7BF>Եģ<D4B5><C4A3><EFBFBD>Ϊ `CountInto` <20><>Ҫһ<D2AA><D2BB> `Appender`<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD> `Append` <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ϡ<EFBFBD> <20><> `plst` <20>ϵ<EFBFBD><CFB5><EFBFBD> `LongEnough` Ҳ<>ǿ<EFBFBD><C7BF>Եģ<D4B5><C4A3><EFBFBD>Ϊָ<CEAA><D6B8><EFBFBD>ᱻ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>á<EFBFBD>
|
||||||
|
|
||||||
|
**<EFBFBD>ܽ<EFBFBD>**
|
||||||
|
|
||||||
|
<EFBFBD>ڽӿ<EFBFBD><EFBFBD>ϵ<EFBFBD><EFBFBD>÷<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>кͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>ͬ<EFBFBD>Ľ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>ԴӾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> `P` ֱ<>ӿ<EFBFBD><D3BF>Ա<EFBFBD>ʶ<EFBFBD>ģ<EFBFBD>
|
||||||
|
|
||||||
|
- ָ<>뷽<EFBFBD><EBB7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
- ֵ<><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
|
||||||
|
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ϊָ<CEAA><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȱ<EFBFBD><C8B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ֵ<EFBFBD><D6B5><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>Ϊ<EFBFBD>洢<EFBFBD>ڽӿ<DABD><D3BF>е<EFBFBD>ֵû<D6B5>е<EFBFBD>ַ
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>ӿڸ<EFBFBD>ֵʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>п<EFBFBD><EFBFBD>ܵĽӿڷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ֵ<EFBFBD>ϱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD>ĸ<EFBFBD>ֵ<EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ھͻ<EFBFBD>ʧ<EFBFBD>ܡ<EFBFBD>
|
||||||
|
|
||||||
|
|
||||||
|
<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
Go<EFBFBD><EFBFBD><EFBFBD>Թ淶<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˽ӿڷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD><EFBFBD>ù<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
- <20><><EFBFBD><EFBFBD> *T <20>Ŀɵ<C4BF><C9B5>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ *T <20><> T <20><><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
- <20><><EFBFBD><EFBFBD> T <20>Ŀɵ<C4BF><C9B5>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ T <20><><EFBFBD><EFBFBD><EFBFBD>з<EFBFBD><D0B7><EFBFBD>
|
||||||
|
- <20><><EFBFBD><EFBFBD> T <20>Ŀɵ<C4BF><C9B5>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ *T <20>ķ<EFBFBD><C4B7><EFBFBD>
|
||||||
|
|
||||||
|
|
||||||
|
- [Ŀ¼](directory.md)
|
||||||
|
- <20><>һ<EFBFBD>£<EFBFBD>[11.5 <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ֵ<EFBFBD>Ƿ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>ӿ<EFBFBD>](11.5.md)
|
||||||
|
- <20><>һ<EFBFBD>ڣ<EFBFBD>[11.7 <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>ʹ<EFBFBD><CAB9>Sorter<65>ӿ<EFBFBD><D3BF><EFBFBD><EFBFBD><EFBFBD>](11.7.md)
|
@@ -99,6 +99,7 @@
|
|||||||
- 11.3 [类型断言:如何检测和转换接口变量的类型](11.3.md)
|
- 11.3 [类型断言:如何检测和转换接口变量的类型](11.3.md)
|
||||||
- 11.4 [类型判断:type-switch](11.4.md)
|
- 11.4 [类型判断:type-switch](11.4.md)
|
||||||
- 11.5 [测试一个值是否实现了某个接口](11.5.md)
|
- 11.5 [测试一个值是否实现了某个接口](11.5.md)
|
||||||
|
- 11.6 [使用方法集与接口](11.6.md)
|
||||||
|
|
||||||
## 第三部分:Go 高级编程
|
## 第三部分:Go 高级编程
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user