protobuf로 도메인 자료형 정의하기
syntax = "proto3";
package log.v1;
option go_package = "github.com/SeongUgKim/api/log_v1";
message Record {
bytes value = 1;
uint64 offset = 2;
}
- 최신 버전인 proto3를 사용한다고 명시
- package명 명시
- 이 이름은 생성된 Go 코드의 package명으로 쓰이며, 같은 이름을 가진 메시지 자료형 사이의 충돌을 막아준다.
- protobuf의 메시지는 Go의 구조체와 대응한다.
- protobuf에서는 repeated 키워드를 사용해서 자료형의 slice를 정의 한다.
- repeated Record records는 record field가 Go 코드로는 []Record 자료형이라는 의미이다.
Protobuf 컴파일하기
protoc api/v1/*.proto \
--go_out=. \
--go_opt=paths=source_relative \
--proto_path=.