go 项目

安装环境

1:创建目录

mkdir $HOME/Go
mkdir -p $HOME/Go/src/github.com/user  # 就是我们创建的GitHub仓库的路径,方便我们以后提交代码。

2:设置环境变量

export GOPATH=$HOME/Go   # 项目目录所在的位置
export GOROOT=/usr/local/opt/go/libexec.   # Create /usr/local/opt/go/libexec folder if not existed. (mkdir -p /usr/local/opt/go/libexec)
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin

3:安装go

brew install go

4:"go get" the basics

go get golang.org/x/tools/cmd/godoc

开始创建项目

1:创建项目目录

$mkdir  /Users/liaojessica/Go/sparrow_order_gorpc

2:创建account.proto(under sparrow_order_gorpc/sparrow_order_pb/),并使用该文件编译出go文件

syntax = "proto3";

package sparrow_order;

// 定义一个 service

service SparrowOrder {
    // jwt 生成
    rpc GetUserInfo (UserIDRepuest) returns (UserInfoResponse) {}
}

message UserIDRepuest {
    string Phone = 1;
    string UserID = 2;
    string AppID = 3;
}

message UserInfoResponse {
    string Token = 1;
}

操作:

$cd $GOPATH
$go get -u github.com/golang/protobuf/protoc-gen-go   
$cd /Users/liaojessica/Go/sparrow_order_gorpc
$protoc --go_out=plugins=grpc:. sparrow_order_pb/account.proto
>>>>>A go file named “account.pb.go” will be generated in  /Users/liaojessica/Go/sparrow_order_gorpc/sparrow_order_pb

操作说明:什么是protoc-gen-go

protoc-gen-go是protobuf编译插件系列中的Go版本。从上一小节知道原生的protoc并不包含Go版本的插件,不过可以在github上发现专门的代码库(参见github库)。

由于protoc-gen-go是Go写的,所以安装它变得很简单,只需要运行 go get -u github.com/golang/protobuf/protoc-gen-go,便可以在$GOPATH/bin目录下发现这个工具。至此,就可以通过下面的命令来使用protoc-gen-go了。

protoc --go_out=output_directory input_directory/file.proto

其中"--go_out="表示生成Go文件,protoc会自动寻找PATH(系统执行路径)中的protoc-gen-go执行文件。

3:创建account_service.go(#under new folder)文件

package sparrow_order_service

import (
    "context"
    pb "sparrow_order_gorpc/sparrow_order"
    
)
type SparrowOrderServer struct{}

func (s *SparrowOrderServer) GetUserInfo(ctx context.Context,
    in *pb.UserIDRepuest) (*pb.UserInfoResponse, error) {
    result := pb.UserInfoResponse{}
    result.Token = "Yoho!!!"
    return &result, nil
}

4:创建main.go(#under /Users/liaojessica/Go/sparrow_order_gorpc)

package main

import (
    cs "sparrow_order_gorpc/sparrow_order_service"
    pb "sparrow_order_gorpc/sparrow_order"
    "google.golang.org/grpc"
    "net"
    "fmt"
)

func main() {
    port := "8005"
    host := "localhost"
    listen, err := net.Listen("tcp", ":"+port)
    if err != nil {
        if err != nil {
            fmt.Printf("failed to listen: %v", err)
        }
    } else {
        fmt.Printf("listen: " + host + ":" + port)
    }
    server := grpc.NewServer()
    // 注册 Common
    pb.RegisterSparrowOrderServer(server, &cs.SparrowOrderServer{})
    // reflection.Register(server)
    if err := server.Serve(listen); err != nil {
        fmt.Printf("failed to serve: %v", err)
    }
}

5: 生成go.mod

$go mod init sparrow_order_gorpc. 
#under /Users/liaojessica/Go/sparrow_order_gorpc
#After executing this command, go.mod file will be created with following content.
$cat go.mod
module sparrow_order_gorpc


go 1.12


require (
	github.com/golang/protobuf v1.3.1
	google.golang.org/grpc v1.21.1

6:开始gRPC service:

$cd /Users/liaojessica/Go/sparrow_order_gorpc_client
$ go run main.go 
go: finding google.golang.org/grpc/status latest
go: finding google.golang.org/grpc/codes latest
connting server...connted server: 127.0.0.1:8005jwt=%!(EXTRA string=Yoho!!!)

在保存新代码后,如果想自动build自动重启,可以用 gin

go get github.com/codegangsta/gin

然后运行

gin -i run main.go

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值