사용 protobuf 이동

먼저 이동을 설치 : 말, 바이두, 또는 내 참조 주시기하지 https://blog.csdn.net/u013755520/article/details/89031598는 끝으로 이동을 설치 한;

설치 가서 내를 참조 인터페이스를 호출 protobuf : https://blog.csdn.net/u013755520/article/details/91375830  ;

protobuf 효과 직렬화 된 오브젝트는 [] 바이트가된다 : 타입 OBJ {} 다양한 속성을 이러한 목적은 임의의 타입 일 수있다;

유사 : https://blog.csdn.net/u013755520/article/details/90546726    이진 패킷은 [] 바이트 {UINT32 UINT32 []} 바이트 물체 오브젝트의 기본 형태가된다;

protobuf 및 bianry 패킷은 인코딩의 범위에 속한다.


1.protobuf 문법

1.1 메시지 유형

 

1.2 데이터 형식

 

2. 사용 protobuf

아래 / 이러한 프로토 같은 디렉토리 xx.proto 파일 작성을위한 신택스에 따라 2.1

syntax = "proto3";
package pb;

message Person {
    string name = 1;
    int32 age = 2;
    repeated string emails = 3;
    repeated string phones = 4;
}

message PhoneNumber {
    string number = 1;
    PhoneType type = 2;
}
enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
}

2.2 컴파일러 : 프로토 / 디렉토리에 CD를, 다음 명령을 실행

protoc --go_out =. / * .proto

goland에 왜 각 구조에 이동이 파일이 proto.Message 인터페이스를 달성했지만, 나도 몰라, 그것은 xx.pd.go 파일을 생성 xx.proto 현재 디렉토리에있는 파일에 따르면, 현재 디렉토리에있을 것입니다 당신은 실제로 제안되지 않는다? ? ? 공부하기

프로그램 2.3 xx.pb.go 파일

즉 우수한 광장 pb.go 구조에서와 같이, 직접적 일 수 있고, 직접 프로그램에서는, 관통 proto.Marshal [] 바이트로 변환되는 OBJ pb.go;

반대로, 직접 프로그램 proto.Unmashal의 pb.go의 OBJ으로 입을 수있다 [] 바이트로 변환되고

package main

import (
	"fmt"
	"github.com/micro/protobuf/proto"
	pb "rpc/proto"
)

func main(){
	person := &pb.Person{
		Name:"yz",
		Age:11,
		Emails:[]string{"[email protected]","[email protected]"},
		Phones:[]*pb.PhoneNumber{
			&pb.PhoneNumber{
				Number:"123456",
				Type:pb.PhoneType_HOME,
			},
			&pb.PhoneNumber{
				Number:"123456",
				Type:pb.PhoneType_MOBILE,
			},
			&pb.PhoneNumber{
				Number:"123456",
				Type:pb.PhoneType_WORK,
			},
		},
	}

	//marshal:  obj---[]byte
	data,err := proto.Marshal(person)
	if err != nil {
		fmt.Println(err)
	}

	//unmarshal : []byte---obj
	newPersonObj := &pb.Person{}
	err = proto.Unmarshal(data,newPersonObj)
	if err != nil {
		fmt.Println(err)
	}

	fmt.Println(newPersonObj)
}

 

 

 

추천

출처blog.csdn.net/u013755520/article/details/91580273