方法定义

package main

import "fmt"

// 类型
type List []int
/*
ex:
   var list List
   fmt.Printf("类型:%T",list)
res:
   类型:main.List
*/

// 方法:输出长度
func (l List) Len() int {
   return len(l)

}
/*
ex:
   var list List
   fmt.Printf("长度:%d",list.Len())
res:
   长度:0
*/

func (l *List) Append(val int) {
   *l = append(*l,val)
}
/*
ex:
   var list List
   list.Append(123)
   fmt.Printf("Append After:%v",list)
res:
   Append After:[123]
*/

type Appender interface {
   Append(int)
}
/*
ex:
   li := List{1,2,3}
   var a Appender
   a = li
   fmt.Println(a.Append(1))
res:
   [1 2 3 1]
*/

func CountInto(a Appender,start,end int)  {
   for i := start;i <= end;i++{
      a.Append(i)
   }
}
/*
ex:

res:

*/

type Lener interface {
   Len() int
}
/*
ex:
   li := MyString("A B C")
   var a Lener
   a = li
   fmt.Println(a.Len())
res:
   5
*/

func LongEnough(l Lener) bool {
   return l.Len()*10>42

}
/*
ex:

res:

*/
type MyString string

func main()  {


   //A bare valued
   var lst List
   if LongEnough(lst){
      fmt.Printf("-lst is enougth\n")
   }

   // A pointer value
   plst := new(List)
   CountInto(plst,1,10)
   if LongEnough(plst){
      fmt.Printf("-plst is long enough\n")
   }

}

猜你喜欢

转载自blog.csdn.net/q320036715/article/details/84899472
今日推荐