package main import ( "context" "encoding/gob" "log" "math/rand" "net/http" "os" "time" "github.com/grpc-ecosystem/grpc-gateway/runtime" ) var cl *KeyList = &KeyList{} func init() { // 注册序列化结构 gob.RegisterName("workshop.KeyList", KeyList{}) gob.RegisterName("workshop.Country", Country{}) gob.RegisterName("workshop.LastName", LastName{}) gob.RegisterName("workshop.FirstName", FirstName{}) gob.RegisterName("workshop.NameCode", NameCode{}) f, err := os.OpenFile("./my.log", os.O_CREATE|os.O_RDWR, os.ModePerm) CheckErrorPanic(err) log.SetOutput(f) rand.Seed(time.Now().UnixNano()) // 加载序列化结构 LoadGob("./data/building.gob", buildinglist) LoadGob("./data/country.gob", countrylist) LoadGob("./data/firstname.gob", fnl) LoadGob("./data/lastname.gob", lnl) LoadGob("./data/province.gob", province) LoadGob("./data/ways.gob", ways) } func main() { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) defer cancel() // gserver := grpc.NewServer() mux := runtime.NewServeMux() // 注册rpc http接口 根据protobuf协议生成 RegisterNameHandlerServer(ctx, mux, &nameserver{}) RegisterCountryHandlerServer(ctx, mux, &countryserver{}) RegisterProvinceAreaCityHandlerServer(ctx, mux, &provinceserver{}) RegisterWayHandlerServer(ctx, mux, &wayserver{}) RegisterBuildingHandlerServer(ctx, mux, &buildingserver{}) log.Println("Listen 4433") log.Fatal(http.ListenAndServe(":4433", mux)) }