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

Posted 知其黑、受其白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang 所有的 T 类型都有 *T 类型吗?相关的知识,希望对你有一定的参考价值。

阅读目录

阐述

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

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

随便举个常量的例子


错误的原因是,say方法的接收者是指针类型,而NAME是常量类型,不能调用指针类型的方法。

应该将say方法的接收者改为T值类型即可

package main

import "fmt"

type T string

func (T T) say() 
	fmt.Println("hello", T)

func main() 
	const NAME T = "iswbm"
	NAME.say() // hello iswbm

指针类型方式使用示例

package main

import "fmt"

type T string

func (T *T) say() 
	fmt.Println("hello", *T)

func main() 
	// 第一种方式
	// var s T = "iswbm"
	// s.say()
	// 第二种方式
	name := T("cc")
	name.say() // hello cc

以上是关于Golang 所有的 T 类型都有 *T 类型吗?的主要内容,如果未能解决你的问题,请参考以下文章

方法集

golang new make 区别

golang 基础知识3

Golang教程:goroutine信道

golang基础之数组

golang 如何判断变量的类型