go의 interface는 OO개념이 아니다. struct에서 적당히 호출할 수 있는 형태로 만들어줄 수 있다.
package main
import "fmt"
type Rectangle struct {
X1 int
Y1 int
X2 int
Y2 int
}
type Get interface {
getX1() int
}
func main() {
r := Rectangle{1,1,2,2,}
showGet(r)
}
func (r Rectangle) getX1() int{
return r.X1
}
func showGet(get Get) {
x := get.getX1()
fmt.Println(x)
}
결과값은 1이다.
이 뿐 아니라 아무거나 넣을 수 있는 void * 이기도 하다.
package main
import "fmt"
func main() {
var a interface{}
printInterface(a)
a = 1
printInterface(a)
a = "a"
printInterface(a)
r := Rectangle{1,2,3,4}
printInterface(r)
}
func printInterface(i interface{}) {
fmt.Println(i)
}
type Rectangle struct {
X1 int
Y1 int
X2 int
Y2 int
}
결과는 다음과 같다.
<nil>
1
a
{1 2 3 4}
'golang' 카테고리의 다른 글
[golang] 매개 변수 받기 (0) | 2017.09.08 |
---|---|
[golang] 에러(error) 예제 (0) | 2017.09.07 |
[golang] defer 예제 (0) | 2017.09.07 |
[golang] 함수.클로져 예제 (0) | 2017.09.06 |
[golang] 구조체 초기화/메소드 예제 (0) | 2017.08.30 |