구글에서 블로그를 한다
go 언어에서는 함수명이 같을 경우 재선언 오류를 발생시킨다. 다른 메소드를 만들고 오버로드 처리하도록 설계해서 구현해야 한다. 오버로드 처리를 위해 type switch를 사용해서 들어오는 타입에 따라 메소드 호출하는 처리를 사용한다. 함수나 메소드 인자를 다양하게 처리하려면 []interface{} 로 정의해서 다양한 인자를 받아서 오버로딩 처리하면된다. package main import ( "fmt" ) func main() { var p Person p = Person{"dahl"} var s string = "moon" fmt.Println(" overloading ", p.Overload(s)) fmt.Println(" overloading", p.Overload(nil)) } type Person struct { name string } func (this *Person) Overload(args interface{}) string { switch args.(type) { case string: return this.GetName2("moon") case nil: return this.GetName1() default: return " no match" } } func (this *Person) GetName1() string { return this.name } func (this *Person) GetName2(s string) string { return this.name }
댓글
댓글 쓰기