mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2024-11-05 05:53:45 +00:00
commit
aaa4d9ccf3
@ -41,6 +41,6 @@ type Rand struct{ /* ... */ }
|
|||||||
func New(source Source) *Rand
|
func New(source Source) *Rand
|
||||||
```
|
```
|
||||||
|
|
||||||
这可能导致一些名字重复,例如template.Template或rand.Rand,这就是为什么这些种类的包名往往特别短的原因之一。
|
这可能导致一些名字重复,例如template.Template或rand.Rand,这就是这些种类的包名往往特别短的原因之一。
|
||||||
|
|
||||||
在另一个极端,还有像net/http包那样含有非常多的名字和种类不多的数据类型,因为它们都是要执行一个复杂的复合任务。尽管有将近二十种类型和更多的函数,但是包中最重要的成员名字却是简单明了的:Get、Post、Handle、Error、Client、Server等。
|
在另一个极端,还有像net/http包那样含有非常多的名字和种类不多的数据类型,因为它们都是要执行一个复杂的复合任务。尽管有将近二十种类型和更多的函数,但是包中最重要的成员名字却是简单明了的:Get、Post、Handle、Error、Client、Server等。
|
||||||
|
@ -33,4 +33,4 @@ func Sprint(x interface{}) string {
|
|||||||
|
|
||||||
但是我们如何处理其它类似[]float64、map[string][]string等类型呢?我们当然可以添加更多的测试分支,但是这些组合类型的数目基本是无穷的。还有如何处理类似url.Values这样的具名类型呢?即使类型分支可以识别出底层的基础类型是map[string][]string,但是它并不匹配url.Values类型,因为它们是两种不同的类型,而且switch类型分支也不可能包含每个类似url.Values的类型,这会导致对这些库的依赖。
|
但是我们如何处理其它类似[]float64、map[string][]string等类型呢?我们当然可以添加更多的测试分支,但是这些组合类型的数目基本是无穷的。还有如何处理类似url.Values这样的具名类型呢?即使类型分支可以识别出底层的基础类型是map[string][]string,但是它并不匹配url.Values类型,因为它们是两种不同的类型,而且switch类型分支也不可能包含每个类似url.Values的类型,这会导致对这些库的依赖。
|
||||||
|
|
||||||
没有办法来检查未知类型的表示方式,我们被卡住了。这就是我们为何需要反射的原因。
|
没有办法来检查未知类型的表示方式,我们被卡住了。这就是我们需要反射的原因。
|
||||||
|
Loading…
Reference in New Issue
Block a user