Go 언어 인터페이스 대하여 배워보기
오늘은 Go 언어의 인터페이스에 대하여 작성하면서 배워보려 합니다.
package main
import (
"fmt"
)
type sample interface{
generator() string
}
func main() {
var s sample
fmt.Println(s)
}
sample이라는 인터페이스에 generator라는 메소드를 모아두었습니다.
인터페이스가 비어있기 때문에 출력하면 nil이라고 출력됩니다.
package main
import (
"fmt"
)
type custom string
type sample interface{
generator() string
}
func (c custom)generator()string{
str := "hello world, "
str += fmt.Sprintf("%v", c)
return str
}
func main() {
var s sample
s = custom("go!")
fmt.Println(s.generator())
}
sample 인터페이스에 있는 메소드를 구현하여 메인함수에서 사용한 모습니다.
package main
import (
"fmt"
)
func function(i interface{}) {
fmt.Printf(fmt.Sprintf("%v\n",i))
}
func main() {
function("interface")
}
빈 인터페이스 타입으로 인자를 받으면 모든 타입을 받을 수 있습니다.
package main
import (
"fmt"
)
func function(i interface{}) {
fmt.Printf(fmt.Sprintf("%v\n",i))
}
func main() {
t := struct {
name string
}{
name: "name",
}
function(t)
}
익명 구조체 또한 빈 인터페이스 타입에 넣을 수 있습니다.
Written on September 20, 2018