Go Interface

    代碼結構以下: shell

gaojie@Joy:/media/gaojie/Linux/Go/workspace/interface$ tree
.
├── bin
│   └── main
└── src
    └── main.go

2 directories, 2 files
cat src/main.go
package main

import ("log";"fmt")

/**
* 定義一個Gaojie的結構體
*/
type Gaojie struct {
	name string
	age int
}

//定義一個Person接口, 提供GetName方法, 如何結構(對象只要存在該方法,就能夠是他的實現)
type Person interface {
	GetName() string
}

//給結構Gaojie體增長GetName()方法
func (this *Gaojie) GetName() string{
	return this.name
}

func main(){
	//scan input
	var name string
	var age int
	c1 , e := fmt.Scanf("%s", &name)
	if e != nil {
		log.Fatal(e)
	}
	log.Println("->", c1, name);
	c2, e := fmt.Scanf("%d", &age)
	if e != nil {
		log.Fatal(e)
	}
	log.Println("->", c2, age);

	g1 := &Gaojie{name : name, age : age}
	log.Println(g1)

	//將結果轉型爲Person
	var p1 Person = &Gaojie{name : name+"1", age : age+1}
	log.Println(p1.GetName())

}
編譯
go build -o bin/main src/main.go
執行
gaojie@Joy:/media/gaojie/Linux/Go/workspace/interface$ ./bin/main
gaojie
2013/10/19 23:50:11 -> 1 gaojie
24
2013/10/19 23:50:13 -> 1 24
2013/10/19 23:50:13 &{gaojie 24}
2013/10/19 23:50:13 gaojie1
相關文章
相關標籤/搜索