定义基础类型
1 | type myTypeA float64 |
虽然myTypeA,和myTypeB都是同一基础类型,但是不能把另一个类型的值赋给它
1 | package main |
- 一个定义类型提供所有与基础类型相同的运算
- 一个定义类型可以被用来与字面值一起用于运算
- 但是定义类型不能用来与不同类型的值一起运算,即使它们是来自相同的基础类型
定义方法
可以为指定的类型定义方法
一旦方法被定义在了某个类型,它就能被该类型的任何值调用
func
(接收器
类型
) 函数名
() { }
1 | package main |
- 接收器的参数类似C++的this指针
- 按照惯例,Go开发者通常使用一个字母作为名称——小写的接收器类型名称的首字母
- 方法和类型必须定义在同一包中
- Go使用接收器参数来代替self和this,self和this是隐含的,而Go显式地声明一个接收器参数
导出方法
就像其他的函数,方法名称以大写字母开头,则认为是导出的
指针类型的接收器参数
就像其他的参数一样,接收器参数接收一个原值的拷贝。如果你的方法需要修改接收器,你应该在接收器参数上使用指针类型,并且修改指针指向的值
1 | package main |
其他
你需要将值保存在变量中,允许Go能得到一个指向它的指针
1 | package main |