Golang Day3


Interface

  • 作為泛用型別使用
  • 作為 OOP 方式使用

泛用型別


package main

import(
  "fmt"
)

var (
  a,b,c interface{}
)

func main(){
    a = 123
    b = 123.4
    c = "this is interface test"
    fmt.Println(a)
    fmt.Println(b)
    fmt.Println(c)
}



OOP 方式


package main

import(
  "fmt"
)

type Skill interface{
   GetName() string
   GetSkill() string
}

func  ShowInfo(s Skill){
  fmt.Printf("%s,%s",s.GetName(),s.GetSkill())
}

type Dog struct{
   name string
   skill string
}

func (d *Dog) GetName() string{
   return d.name
}

func (d *Dog) GetSkill() string{
   return d.skill
}

type Cat struct{
   name string
   skill string
}

func (c *Cat) GetName() string{
   return c.name
}

func (c *Cat) GetSkill() string{
   return c.skill
}

func main(){
  dog:=&Dog{
    name:"my name is black",
    skill:"I can jump",
  }

  cat:=&Cat{
    name:"my name is white",
    skill:"I can eat",
  }

  fmt.Println(dog)
  fmt.Println(cat)
  ShowInfo(dog)

  var abc interface{}
  abc = dog
  fmt.Println(abc)  //&{my name is black I can jump}
  fmt.Println(&abc) //0x40c128
  fmt.Println(abc.(*Dog)) //&{my name is black I can jump}
  
  ShowInfo(abc.(Skill)) //my name is black,I can jump

}

  • Share:

You Might Also Like

0 意見