go语言的pair

package main

import (
   "fmt"
)

func myFunc(abx interface{}){
   fmt.Println("my func is called")
   fmt.Println(abx)//这个abx 可以随便换
   //类型断言机制
   value,ok:=abx.(string)
   if !ok{
      fmt.Println("abx is not string")
   }else{
      fmt.Println("abx is string,value=",value)
   }
}
type Student struct {
   name string
}

func main() {
   //反射,每个变量可以看做为pair<type,value>,能够通过变量反射找到type和value
   stu:=Student{"jiaqiang"}
   myFunc(stu)
   myFunc(100)
   myFunc(31.4)
   //cc pair<type Book,value:Book的地址 >
   cc:=&Book{}
   var r Reader
   //r pair<type:,value:>
   r=cc
   r.ReadBook()//实际是调用的pair<Book>中的方法
   var w Writer
   w=r.(Writer)//此处断言成功了,因为r和w的type一致 
   w.WriteBook()

}
type Reader interface {
   ReadBook()
}
type Writer interface{
   WriteBook()
}
type Book struct{//这个是Book 类

}
func (this *Book) ReadBook(){
   fmt.Println("Read a book")
}
func (this *Book) WriteBook() {
   fmt.Println("Write a book")
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值