"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Go의 "*"수정 자 : 통과 값 또는 회의 별 회의?

Go의 "*"수정 자 : 통과 값 또는 회의 별 회의?

2025-03-23에 게시되었습니다
검색:617

Go's

Java에서는 객체를 참조로 전달하기 때문에 참조로 객체를 전달하는 것은 간단합니다. 그러나 Go에서는 Pass-by value 및 Pass-by-reference를 모두 허용 할 수있는 포인터를 사용하는 것이 더 효율적일 수 있습니다.

"

" ""

"는 유형에 대한 포인터를 나타냅니다. 예를 들어, func puttasks (db

sql.db)는 db 매개 변수가 sql.db 객체에 대한 포인터임을 나타냅니다. 그 이유는 기술적으로 패스 단위로만 지원하고 포인터를 통과하는 것은 패스 바이 회의를 시뮬레이션하는 방법입니다.

포인터를 통과 할 때 메모리의 실제 객체를 가리키는 값 (포인터 자체)을 전달합니다. 이는 포인터를 통해 객체에 대한 변경이 함수에 전달 된 원래 변수에 반영 될 것임을 의미합니다. 다른 한편으로, " *"없이 값을 직접 전달하면 원래 값의 사본이 있으므로 함수의 변경 사항은 원래 변수에 영향을 미치지 않습니다.

제공된 예제, func printperson (p *person)은 세부 사항을 인쇄하려면 사람 객체를 수정해야하기 때문에 포인터가 필요합니다. 대신 값을받은 경우 변경 사항이 함수 내에서 보유 된 사본에만 영향을 미칩니다.

Pass-by-reference 및 Pass-By-value 이해는 효과적인 코드 작성에 중요합니다. 적절한 경우 포인터를 사용하면 성능을 향상시키고 기능과 발신자 코드 간의 일관성을 유지할 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3