// 新类型clusterSlotSlice是自定义类型 // 老类型[]*clusterSlot是类型字面量 // 因为[]*clusterSlot不是自定义类型,也不是预定义类型。 // 新类型clusterSlotSlice的用途是:用于排序。 type clusterSlotSlice []*clusterSlot func (p clusterSlotSlice) Len() int { return len(p) func (p clusterSlotSlice) Less(i, j int) bool { return p[i].start < p[j].start func (p clusterSlotSlice) Swap(i, j int) { p[i], p[j] = p[j], p[i] func main() {
  • oldType是自定义类型demo:
  • 注:新类型不继承老类型的方法。

    注:新类型继承老类型的操作,如:range,len,cap等。

    package main
    import "fmt"
    // XiaoYiOne 创建一个自定义类型
    // 老类型是类型字面量
    type XiaoYiOne struct {
      Name string
      Age int64
    // 返回姓名
    func (xy1 XiaoYiOne) GetName() string {
      return xy1.Name
    // XiaoYiTwo 创建一个自定义类型
    // 老类型是自定义类型
    type XiaoYiTwo XiaoYiOne
    // 返回年龄
    func (xy2 XiaoYiTwo) GetAge() int64 {
      return xy2.Age
    func main() {
      var xy1 XiaoYiOne
      var xy2 XiaoYiTwo
      xy1 = XiaoYiOne{
        Name: "xiaoYi",
        Age: 18,
      xy2 = XiaoYiTwo(xy1)
      fmt.Println(xy1.GetName())
      fmt.Println(xy2.GetAge())
      // 方法不继承
      // Unresolved reference 'GetName'
      fmt.Println(xy2.GetName)