아래 DoSomethingB
라인을 따라 "참조로 전달된" 항목을 여러 함수가 업데이트하는 코드를 작성 중입니다. 초보자로서 이것은 나에게 다소 직관적이지 않습니다. 나는 오히려 결과를 반환하는 함수를 갖고 싶습니다(메소드가 아니고 수신자를 업데이트하지 않는 한).
질문:
DoSomethingB
으로? DoSomethingA
DoSomethingB
DoSomethingB 대 DoSomethingA: 와 같은 패턴을 사용하면 복사본을 만들지 않고 원래 변수를 수정하여 불필요한 할당을 피하려는 경우에 유용합니다. 그러나 코드를 이해하기가 더 어려워질 수 있습니다. DoSomethingB
这样的模式会很有帮助,从而避免不必要的分配。但是,它可能会导致代码更难理解。使用 DoSomethingA
(결과 반환)을 사용하는 것은 일반적으로 Go에서 더 관용적이며 가독성 때문에 선호되는 경우가 많습니다.
DoSomethingB가 Go에서 좋은 스타일로 간주되나요? : 특히 대규모 데이터 구조를 다룰 때 Go에서 DoSomethingB
와 같은 코드를 보는 것은 드문 일이 아니지만 Go의 관용적 접근 방식은 반환 값이 포인터를 수정하도록 권장합니다. 포인터를 사용하여 값을 직접 수정하면(특히 정수와 같은 내장 유형의 경우) 코드를 이해하기 어려울 수 있습니다.
예제 DoSomethingC
는 지역 변수에 대한 포인터를 반환하므로 문법에 맞지 않는 것으로 간주됩니다. 함수가 반환된 후 메모리 위치가 다른 목적으로 재사용될 수 있으므로 정의되지 않은 동작이 발생할 수 있습니다. 이 패턴은 피하는 것이 가장 좋습니다.
요약하자면, 관용적인 Go를 따르고 싶다면 DoSomethingA
这样的模式。如果您有充分的理由修改原始数据并且担心性能(例如大型数据结构),那么 DoSomethingB
이 패턴을 선호하세요. 원본 데이터를 수정해야 할 타당한 이유가 있고 성능(예: 대규모 데이터 구조)이 걱정된다면
위 내용은 Go는 언제 값을 반환하거나, 참조를 반환하거나, 아무것도 반환하지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!