mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 00:43:26 +08:00
翻译更正+原书勘误+译者注 (#598)
* 翻译更正+译者注 原文:concatenates the string with itself. 为了便于理解增加了译者注 * 原书此处也是11.9,但实际上指的是练习11.11 原书此处也是11.9,但实际上指的是练习11.11 * 此处英文版原书有误,应该是练习10.16和10.17 * 原书此处有误,因为方法无法同时使用命名过的返回值和未命名的返回值 会报错:Method specification has both named and unnamed return parameters '(x interface{}, error)' * 补漏+易读性提升 A function which has a (one or more) parameter of an interface type can be called with a variable(此处译文中漏掉) whose type implements that interface. 其**实参**可以是任何实现了该接口的类型的变量
This commit is contained in:
@@ -10,7 +10,7 @@ Go 中的接口跟 Java/C# 类似:都是必须提供一个指定方法集的
|
||||
|
||||
和其它语言相比,Go 是唯一结合了接口值,静态类型检查(是否该类型实现了某个接口),运行时动态转换的语言,并且不需要显式地声明类型是否满足某个接口。该特性允许我们在不改变已有的代码的情况下定义和使用新接口。
|
||||
|
||||
接收一个(或多个)接口类型作为参数的函数,其实参可以是任何实现了该接口的类型。 `实现了某个接口的类型可以被传给任何以此接口为参数的函数` 。
|
||||
接收一个(或多个)接口类型作为参数的函数,其**实参**可以是任何实现了该接口的类型的变量。 `实现了某个接口的类型可以被传给任何以此接口为参数的函数` 。
|
||||
|
||||
类似于 Python 和 Ruby 这类动态语言中的 `动态类型(duck typing)`;这意味着对象可以根据提供的方法被处理(例如,作为参数传递给函数),而忽略它们的实际类型:它们能做什么比它们是什么更重要。
|
||||
|
||||
@@ -275,17 +275,17 @@ type ReaderWriter struct {
|
||||
|
||||
在练习 7.13 中我们定义了一个 map 函数来使用 int 切片 (map_function.go)。
|
||||
|
||||
通过空接口和类型断言,现在我们可以写一个可以应用于许多类型的 `泛型` 的 map 函数,为 int 和 string 构建一个把 int 值加倍和连接字符串值的 map 函数 `mapFunc`。
|
||||
|
||||
通过空接口和类型断言,现在我们可以写一个可以应用于许多类型的 `泛型` 的 map 函数,为 int 和 string 构建一个把 int 值加倍和将字符串值与其自身连接(译者注:即`"abc"`变成`"abcabc"`)的 map 函数 `mapFunc`。
|
||||
|
||||
提示:为了可读性可以定义一个 interface{} 的别名,比如:type obj interface{}
|
||||
|
||||
**练习 11.12**:[map_function_interface_var.go](exercises/chapter_11/map_function_interface_var.go):
|
||||
|
||||
稍微改变练习 11.9,允许 `mapFunc` 接收不定数量的 items。
|
||||
稍微改变练习 11.11,允许 `mapFunc` 接收不定数量的 items。
|
||||
|
||||
**练习 11.13**:[main_stack.go](exercises/chapter_11/main_stack.go)—[stack/stack_general.go](exercises/chapter_11/stack/stack_general.go):
|
||||
|
||||
在练习 10.10 和 10.11 中我们开发了一些栈结构类型。但是它们被限制为某种固定的内建类型。现在用一个元素类型是 interface{}(空接口)的切片开发一个通用的栈类型。
|
||||
在练习 10.16 和 10.17 中我们开发了一些栈结构类型。但是它们被限制为某种固定的内建类型。现在用一个元素类型是 interface{}(空接口)的切片开发一个通用的栈类型。
|
||||
|
||||
实现下面的栈方法:
|
||||
|
||||
@@ -293,7 +293,7 @@ type ReaderWriter struct {
|
||||
Len() int
|
||||
IsEmpty() bool
|
||||
Push(x interface{})
|
||||
Pop() (x interface{}, error)
|
||||
Pop() (interface{}, error)
|
||||
```
|
||||
|
||||
`Pop()` 改变栈并返回最顶部的元素;`Top()` 只返回最顶部元素。
|
||||
|
Reference in New Issue
Block a user