From 62a50dd7603bf2c718f7dcddac8509112822fd7b Mon Sep 17 00:00:00 2001 From: Godopu Date: Fri, 17 Jul 2026 16:41:17 +0900 Subject: [PATCH] docs: explain --go_out and --go-grpc_out in combination with go_package in Section 4.3 --- docs/GRPC.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docs/GRPC.md b/docs/GRPC.md index c1d7846..f0431e7 100644 --- a/docs/GRPC.md +++ b/docs/GRPC.md @@ -166,13 +166,21 @@ gRPC 개발 환경을 구축하기 위해 설치하는 세 가지 프로그램 ``` ### 4.3 실제로 번역하기 (컴파일 명령어) -아래 명령어는 컴퓨터에게 **"내가 작성한 `protoapi.proto` 약속 장부를 Go 언어로 번역해서 현재 실습 디렉터리 내부의 `protoapi/` 폴더에 가지런히 넣어줘!"** 하고 지시하는 마법의 명령어입니다: +아래 명령어는 컴퓨터에게 작성한 명세 문서를 바탕으로 실제 Go 컴파일 결과 코드를 얻어내기 위해 기동하는 명령어입니다: ```bash # 실습 디렉터리로 이동한 후 컴파일 실행 cd examples/grpcentity protoc --go_out=. --go-grpc_out=. protoapi.proto ``` -명령을 실행하고 나면 해당 폴더 내의 `protoapi/` 폴더 하위에 다음 두 파일이 기분 좋게 생성됩니다: + +#### 컴파일 옵션 세부 작동 원리 +컴파일 시 사용하는 옵션들은 각 결과물 파일이 생성될 **개별 기준 디렉터리(Base Directory)**를 선언하는 지시자입니다: +* **`--go_out=.`**: 데이터 규격(Message) 번역본인 `protoapi.pb.go` 파일이 출력될 기준 위치를 현재 명령을 실행 중인 경로(`.`)로 지정합니다. +* **`--go-grpc_out=.`**: 네트워크 원격 함수(Service) 번역본인 `protoapi_grpc.pb.go` 파일이 출력될 기준 위치를 현재 실행 경로(`.`)로 지정합니다. + +**🚨 Go 패키지 옵션과의 상호 결합 메커니즘**: +이 옵션들은 단독으로 최종 목적지를 결정하지 않습니다. 컴파일러는 지정된 기준 경로(예: `--go_out=.`)를 바탕으로, `.proto` 스키마 장부 내부에 선언된 `option go_package = "./protoapi;protoapi"` 의 세부 경로 정보를 읽어 들여 최종 병합합니다. +따라서 **기준 경로(`.`) + 상세 상대경로(`./protoapi`)**가 결합하여 현재 실행 디렉터리 하위에 `protoapi/` 폴더가 자동 생성되고, 그 안에 번역된 다음 두 핵심 Go 파일이 정상적으로 놓이게 됩니다: * `protoapi.pb.go`: 약속 문서에 적은 데이터(Message) 규격들을 Go 구조체로 변환해 놓은 파일입니다. * `protoapi_grpc.pb.go`: 기기와 서버가 실제로 요청을 주고받을 수 있게 하는 통신 창구(Service) 함수가 자동 완성된 파일입니다.