>백엔드 개발 >Golang >Go 메소드의 성능에 영향을 미치는 값으로 'this'를 전달합니까?

Go 메소드의 성능에 영향을 미치는 값으로 'this'를 전달합니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-19 17:27:10740검색

Does Passing

값으로 "this"를 전달하면 Go 메서드의 성능이 저하되나요?

값 전달 함수 인수가 상당한 성능을 발휘할 수 있는 C와 달리 변수 복사로 인한 페널티, Go의 메소드 수신자는 다른 패러다임을 따릅니다.

Go에서는 메소드 수신기는 단지 구문상의 편의일 뿐입니다. 아래에 설명된 대로:

type Something struct {
    Value int
}

func (s *Something) ChangeValue(n int) {
    s.Value = n
}

func main() {
    o := new(Something)
    fmt.Println(o.Value)           // Prints 0
    o.ChangeValue(8)             // Changes o's value to 8
    fmt.Println(o.Value)           // Prints 8
    (*Something).ChangeValue(o, 16) // Same as calling o.ChangeValue(16)
    fmt.Println(o.Value)           // Prints 16
}

ChangeValue의 수신자 s는 포인터이므로 C의 참조와 유사합니다. 수신자가 값 유형인 경우 값 변경을 허용하지 않습니다.

따라서 Go의 포인터 수신자 접근 방식은 C/C에서 관찰되는 성능 저하와 달리 캡슐화를 보장하고 "this" 인스턴스 전체의 복사를 방지합니다. 값으로 인수를 전달합니다.

위 내용은 Go 메소드의 성능에 영향을 미치는 값으로 'this'를 전달합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.