3.8 所有的 T 类型都有 *T 类型吗?

*T 类型的对象指的是类型是 T 的对象的指针,很明显,只有当 T 类型的对象,是可以寻址的情况,才可以取到其指针。

诸如字符串、map 的元素、常量、包级别的函数,都是不可寻址的,它们都没有对应的 *T 类型

随便举个常量的例子

package main

import "fmt"

type T string

func (T *T) say() {
    fmt.Println("hello")
}

func main() {
    const NAME T = "iswbm"
    NAME.say()
}

报错如下

./demo.go:13:6: cannot call pointer method on NAME
./demo.go:13:6: cannot take the address of NAME