Go语言 如何定义围棋中的上下文键

kmbjn2e3  于 2023-08-01  发布在  Go
关注(0)|答案(1)|浏览(125)

为什么一般的定义是

type key int
type userKey key

字符串
而不是

type userKey int


使用第一种有什么好处?
我看到官方文档中没有解释然后我看到大家都在用第一个

qmb5sa22

qmb5sa221#

type <name> <anothertype>创建一个类型,其内存布局与anothertype相同,但没有其方法。
这允许在类型上声明方法,否则将不可能。
例如利用type key int可以实现具有密钥的fmt.Stringer

type key int

func (k key) String() string {
    return fmt.Sprintf("Value of key is %d", k)
}

字符串
其可用作

func (k key) String() string {
    return fmt.Sprintf("Value of key is %d", k)
}

func main() {
    var k key = 20
    fmt.Printf("k: %v\n", k) // k: Value of key is 20

    var intK int = 10
    fmt.Printf("intK: %v\n", intK) //intK: 10
}

相关问题