SEE: //定义的方法 “获得()UINT64” 为价值二进制 FUNC(我二进制)GET(){UINT64回报 UINT64(I) }谁在为类型转换定义Get()方法? Golang本身?
我们定义了一个get()方法和显然b:=二进制(200)执行它, 但那里之间的连接。我没有找到Get()的定义,我认为这个定义覆盖了一个内部定义,或者我错了。
package main
import (
"fmt"
"strconv"
)
// This defines a interface with one method: "String() string"
type Stringer interface {
String() string
}
// Defines an unsigned 64 bit number
type Binary uint64
// Defines a method "String() string" for value Binary
func (i Binary) String() string {
return strconv.FormatUint(i.Get(), 2)
}
// Defines a method "Get() uint64" for value Binary
func (i Binary) Get() uint64 {
return uint64(i)
}
// Main program
func main() {
b := Binary(200) // Create Unsigned value of 200
s := Stringer(b) // Calls interface "Stringer" on "b"
fmt.Println(s.String()) // "s" is an Stringer Interface Type
}
“我还没有找到Get()被定义在哪里” - 但是你可以定义它。它就在那里,在说'定义一个方法'的评论下,获取()uint64“作为值Binary'。你为什么困惑? – user2357112
'Binary(200)'不会调用'Get',这是类型转换,因为'Binary'是'uint64'的别名。 'Stringer(b)'不会调用任何东西,这是自''Binary'实现'Stringer'接口以来的类型转换。 – creker