0
点赞
收藏
分享

微信扫一扫

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


阅读目录

  • ​​阐述​​
  • ​​应该将say方法的接收者改为T值类型即可​​
  • ​​指针类型方式使用示例​​

阐述

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

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

随便举个常量的例子

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


错误的原因是,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
}


举报

相关推荐

0 条评论