文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
Type 定义
类型定义会创建一个新类型并绑定一个标识符,新类型与给定类型具有相同的底层类型和操作。
TypeDef = identifier Type .
这个类型叫做定义类型,它和其他所有类型都不相同,包括创建它的类型。
type (
Point struct{ x, y float64 } // Point 和 struct{ x, y float64 } 是不同类型
polar Point // polar 和 Point 表示不同类型
)
type TreeNode struct {
left, right *TreeNode
value *Comparable
}
type Block interface {
BlockSize() int
Encrypt(src, dst []byte)
Decrypt(src, dst []byte)
}
定义类型可以关联该类型的方法。它不会继承原来类型的任何方法。但是接口类型的方法集和类型的结构没有改变。
// Mutex 是一个拥有 Lock 和 Unlock 两个方法的数据类型。
type Mutex struct { /* Mutex fields */ }
func (m *Mutex) Lock() { /* Lock implementation */ }
func (m *Mutex) Unlock() { /* Unlock implementation */ }
// NewMutex 与 Mutex 结构相同不过方法集为空。
type NewMutex Mutex
// PtrMutex 的底层类型 *Mutex 的方法集没有改变,
// 但是 PtrMutex 的方法集为空。
type PtrMutex *Mutex
// *PrintableMutex 包含嵌入字段 Mutex 的 Lock 和 Unlock 方法。
type PrintableMutex struct {
Mutex
}
// MyBlock 是与 Block 有相同方法集的接口类型
type MyBlock Block
类型定义可以定义方法集不同的布尔值、数字和字符串类型:
type TimeZone int
const (
EST TimeZone = -(5 + iota)
CST
MST
PST
)
func (tz TimeZone) String() string {
return fmt.Sprintf("GMT%+dh", tz)
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论