golang 기초 질문 드립니다.

조회수 464회
func (block *blockEvent) toFilteredBlock() (*peer.FilteredBlock, error)

위 function 정의에서 toFilteredBlock이 함수 이름(인자 없음) 이고

리턴값이 (*peer.FilteredBlock, error) 로 보이는데 함수 맨앞에 (block *blockEvent) 는 무슨 의미 일까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 리시버라고 합니다.

    쉽게 메소드를 선언할 때 사용한다고 생각하면 됩니다.

    GO언어는 객체지향 언어는 아닙니다.

    즉 class 도 없고 상속도 없습니다.

    struct 가 존재하며 그 struct 를 리시버로 함수를 선언하면 꼭 객체지향의 메소드 같이 사용할 수 있게 됩니다. 또한 상속은 임베디딩을 통한 컴포지션으로 구현을 합니다. 즉 has a 관계를 만듭니다.

    다형성은 interface 로 가능합니다.

    아래 예제를 참고해보세요.

    package main
    
    import (
        "fmt"
    )
    
    type Person interface {
        Walk()
        Sleep()
    }
    
    type Man struct {
        age  int
        addr string
        name string
    }
    
    func (man *Man) Walk() {
        fmt.Println("남자가 걷는다.")
    }
    
    func (man *Man) Sleep() {
        fmt.Println("남자가 잔다.")
    }
    
    func CreateMan(age int, addr string, name string) (man *Man) {
        man = &Man{age: age, addr: addr, name: name}
        return man
    }
    
    func Execute(person Person) {
        person.Walk()
        person.Sleep()
    }
    
    func main() {
        var person Person
        person = CreateMan(10, "aaaa", "name")
        fmt.Println(person)
        Execute(person)
    }
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)