Golang 所有的 T 类型都有 *T 类型吗?
Golang 类型 所有
2023-09-11 14:14:56 时间
阐述
*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 安装第三方包
- PHP7+Swoole比Nginx/Golang性能高75%
- Golang 不分配内存的指针类型能用吗?
- golang接口实例一个公司要计算所有职员的薪水
- Golang 【basic_leaming】fmt.Print, fmt.Printf, fmt.Println 的区别
- Golang【Web 入门】 常用命令
- Golang操作Redis
- qqwry - 纯真ip库的golang服务
- Golang数据类型之基本数据类型
- 基础知识 - Golang 中的正则表达式
- 使用Golang利用ectd实现一个分布式锁
- Golang离线安装GORM与Beego
- [golang]使用gomail发邮件(在Go中发送电子邮件的最佳方式)
- GoLang学习计划
- golang(2):beego 环境搭建
- Golang 中三种读取文件发放性能对比