代碼結構以下: 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