Go 언어 메소드 대하여 배워보기
오늘은 Go 언어의 메소드에 대하여 작성하면서 배워보려 합니다.
package main
import (
"fmt"
)
type sample struct{
str string
i int
}
func (e sample)method() {
fmt.Println(e.str,e.i)
}
func main() {
example := sample{
"hello, world!",
10,
}
example.method()
}
구조체를 생성하고 그 구조체를 위한 메소드를 만들어서 메인 함수에서 구조체의 메소드를 호출할 수 있습니다.
package main
import (
"fmt"
)
type sample struct{
str string
i int
}
func method2(e sample) {
fmt.Println(e.str,e.i)
}
func main() {
example2 := sample{
"hello, world!",
10,
}
method2(example2)
}
인자로 구조체를 넣을 수도 있습니다.
package main
import (
"fmt"
)
type mathPI struct{
pi float32
}
func (m mathPI)method3() float32{
return m.pi
}
func main() {
m := mathPI{
3.14,
}
fmt.Println(m.method3())
}
메소드에서 값을 반환하여 출력할 수 있습니다.
package main
import (
"fmt"
)
type ptr struct{
i int
}
func (p *ptr)method4(new int){
p.i = new
}
func main() {
p := ptr{
i : 10,
}
fmt.Println(p.i)
(&p).method4(20)
fmt.Println(p.i)
fmt.Println(p.i)
p.method4(30)
fmt.Println(p.i)
}
포인터 리시버로 구조체의 포인터를 전달하여 메소드에서 값이 변경되면 그대로 값이 적용됩니다.
굳이 &를 사용하지 않아도 동일한 결과를 가져옵니다.
Written on September 19, 2018