Go Interface

    代码结构如下:

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

 
 
 
 

 

 
 
  
  
  
  

你可能感兴趣的:(Go Interface)