Go 所有的 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

教程来源于Github,感谢iswbm大佬的无私奉献,致敬!

技术教程推荐

AI技术内参 -〔洪亮劼〕

深入浅出计算机组成原理 -〔徐文浩〕

分布式技术原理与算法解析 -〔聂鹏程〕

JavaScript核心原理解析 -〔周爱民〕

现代C++编程实战 -〔吴咏炜〕

后端存储实战课 -〔李玥〕

爆款文案修炼手册 -〔乐剑峰〕

Redis源码剖析与实战 -〔蒋德钧〕

徐昊 · TDD项目实战70讲 -〔徐昊〕