标签:pac 代码 int lin call ring func 简单的 calling
因为接口是一般类型,不知道具体类型,如果要转成具体类型就要使用类型断言
先看简单的(报错的代码)
package main
import "fmt"
type Point struct {
x int
y int
}
func main() {
var a interface{}
p := Point{1,2}
a =p
var b Point
b = a//这里会报错
fmt.Println(b)
}
用类型断言,没用类型断言无法确定a就是Point类型:
package main
import "fmt"
type Point struct {
x int
y int
}
func main() {
var a interface{}
p := Point{1,2}
a =p
var b Point
b = a.(Point)
fmt.Println(b)
}
再看一段:
package main
import "fmt"
type Usb interface {
Start()
Stop()
}
type Phone struct {
name string
}
func (this Phone) Start() {
fmt.Println("the phone is start working ")
}
func (this Phone) Call() {
fmt.Println("calling..")
}
func (this Phone) Stop() {
fmt.Println("the phone is stop working")
}
type Camera struct {
name string
}
func (this Camera) Start() {
fmt.Println("Camera is start working")
}
func (this Camera) Stop() {
fmt.Println("Camera is stop")
}
type Computer struct {
}
func (this Computer) Working(usb Usb) {
usb.Start()
if phone,ok := usb.(Phone); ok {
phone.Call()
}
usb.Stop()
}
func main() {
c :=Computer{}
phone1 :=Phone{"小米"}
phone2 := Phone{"华为"}
camera := Camera{"索尼"}
var usbarr [3]Usb
usbarr[0] = phone1
usbarr[1] = phone2
usbarr[2] = camera
for _,v:= range usbarr {
c.Working(v)
}
}
标签:pac 代码 int lin call ring func 简单的 calling
原文地址:https://www.cnblogs.com/cfc-blog/p/10392776.html