代码结构如下:
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