golang類之間方法調用

package main

import "fmt"
import "reflect"

type C struct {
	A string
}
func (c *C) Read() error {
	fmt.Println("C.Read" )
	return nil 
}
type D struct {
	B string
}

func (d *D) Read() string {
	fmt.Println("D.Read" )
	return d.B 
}
func (c *C) ReadOther(inf interface{}) error {
	ref := reflect.ValueOf(inf)
	method := ref.MethodByName("Read")
	if method.IsValid() {
		r := method.Call(make([]reflect.Value,0))
		fmt.Println(r[0].String())
	}
	 
	return nil 
}

func main() {
	c := &C{A:"iii"}
	d := &D{B:"ddd"}
	c.ReadOther(d)
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章