proto/book.proto
syntax="proto3";
option go_package="./pb";
// package pb;
service BookService{
rpc SayName(BookRequest) returns (BookResponse);
}
message BookRequest{
string name=1;
}
message BookResponse{
string msg=1;
}
// go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28
// go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
// export PATH="$PATH:$(go env GOPATH)/bin"
// protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative book.proto
main.go
package main
import (
pb "bili/proto"
"encoding/json"
"fmt"
"google.golang.org/protobuf/proto"
)
type BookInfo struct {
Name string `json:"name"`
}
func main() {
req := pb.BookRequest{Name: "Go语言从入门到精通"}
b, err := proto.Marshal(&req)
if err != nil {
panic(err)
}
fmt.Print(b)
fmt.Println(string(b))
fmt.Println()
info := BookInfo{Name: "Go语言从入门到精通"}
jsonByte, err := json.Marshal(info)
if err != nil {
panic(err)
}
fmt.Println(jsonByte)
fmt.Println(string(jsonByte))
}