proto

parser for Google ProtocolBuffers definition

Github stars Tracking Chart

proto

Build Status
Go Report Card
GoDoc

Package in Go for parsing Google Protocol Buffers [.proto files version 2 + 3] (https://developers.google.com/protocol-buffers/docs/reference/proto3-spec)

install

go get -u -v github.com/emicklei/proto

usage

package main

import (
	"fmt"
	"os"

	"github.com/emicklei/proto"
)

func main() {
	reader, _ := os.Open("test.proto")
	defer reader.Close()

	parser := proto.NewParser(reader)
	definition, _ := parser.Parse()

	proto.Walk(definition,
		proto.WithService(handleService),
		proto.WithMessage(handleMessage))
}

func handleService(s *proto.Service) {
	fmt.Println(s.Name)
}

func handleMessage(m *proto.Message) {
	fmt.Println(m.Name)
}

validation

Current parser implementation is not completely validating .proto definitions.
In many but not all cases, the parser will report syntax errors when reading unexpected charaters or tokens.
Use some linting tools (e.g. https://github.com/uber/prototool) or protoc for full validation.

contributions

See proto-contrib for other contributions on top of this package such as protofmt, proto2xsd and proto2gql.
protobuf2map is a small package for inspecting serialized protobuf messages using its .proto definition.

© 2017, ernestmicklei.com. MIT License. Contributions welcome.

Main metrics

Overview
Name With Owneremicklei/proto
Primary LanguageGo
Program languageGo (Language Count: 2)
Platform
License:MIT License
所有者活动
Created At2017-01-26 21:30:48
Pushed At2025-06-18 08:57:56
Last Commit At2025-06-18 10:57:37
Release Count52
Last Release Namev1.14.2 (Posted on 2025-06-18 10:57:54)
First Release Nameproto2xsd-0.2 (Posted on 2017-07-12 06:06:00)
用户参与
Stargazers Count603
Watchers Count10
Fork Count67
Commits Count248
Has Issues Enabled
Issues Count80
Issue Open Count0
Pull Requests Count62
Pull Requests Open Count0
Pull Requests Close Count8
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private