J'ai commencé à étudier le go. J'ai commencé à étudier le gRPC. Tout d'abord, j'ai essayé ceci. J'ai trébuché plus que ce à quoi je m'attendais, alors je vais garder une trace. Quick start – gRPC
Je ne suis pas sûr de go ou de gRPC.
L'environnement a utilisé cette image de docker. En tant que nom, je l'ai fait parce que je le voulais. grpc/go - Docker Hub
Docker Je l'ai lancé comme ça. Docker, je ne suis pas sûr.
docker pull grpc/go
docker run --name grpc-go -it grpc/go /bin/bash
Quick Start Exécutez dans l'ordre selon Quick Start.
Lorsque vous exécutez la commande suivante,
$ go run greeter_server/main.go
J'obtiens une erreur comme celle-ci.
cannot find package "golang.org/x/net/http2"
Et
undefined: "github.com/golang/protobuf/proto".ProtoPackageIsVersion4
J'ai mis quelque chose qui me semble nécessaire et je l'ai remis avec la commande suivante.
go get golang.org/x/sys/unix
go get golang.org/x/net/http2
go get google.golang.org/genproto/googleapis/rpc/status
go get -u github.com/golang/protobuf/proto
Le dernier a imité le copier-coller et a ajouté -u, mais je ne suis pas sûr.
Cela ressemble à une mise à jour.
go - The Go Programming Language
The -u flag instructs get to update modules providing dependencies of packages named on the command line to use newer minor or patch releases when available. Continuing the previous example, 'go get -u A' will use the latest A with B v1.3.1 (not B v1.2.3). If B requires module C, but C does not provide any packages needed to build packages in A (not including tests), then C will not be updated.
Lorsque j'ai eu l'erreur ci-dessus, j'ai utilisé la commande suivante pour l'effacer et la remettre, donc je n'ai pas pu déterminer la version.
Je veux le comprendre bientôt. J'ai fait rm, mais au fait, je n'ai pas supprimé le fichier binaire. Qu'est-il arrivé? At-il été écrasé?
rm -rf /go/src/github.com/golang/protobuf/proto
rm -rf /go/src/google.golang.org/grpc/
git clone https://github.com/grpc/grpc-go
Lorsqu'une erreur s'est produite, j'ai fait référence ici. Go Frequently Asked Questions | Protocol Buffers | Google Developers
Avec la correspondance ci-dessus, le premier serveur et client a fonctionné. Après cela, quand j'ai fait SayHello Again, on m'a dit que c'était indéfini.
$ go run greeter_client/main.go
# command-line-arguments
greeter_client/main.go:59:12: c.SayHelloAgain undefined (type helloworld.GreeterClient has no field or method SayHelloAgain)
Le pb" google.golang.org/grpc/examples/helloworld/helloworld " dans main.go était suspect, donc si vous suivez le chemin, vous trouverez/ go / src / google.golang.org Il y avait un vieuxhelloworld.proto dans / grpc / examples / helloworld / helloworld.
Je ne savais pas quoi faire, mais j'ai écrasé le ~ / grpc-go / examples / helloworld / helloworld modifié par le chemin ci-dessus.
Lorsque j'ai exécuté à nouveau le serveur et le client, cela a fonctionné comme prévu.
Pour le moment, c'était bien. «bonjour le monde» est terminé.
L'environnement quand il a finalement déménagé est comme ça.
Je ne sais pas comment vérifier la version saisie avec «go get».
GOPATH est une image qui était docker pull et a été incluse par défaut.
.bashrc fonctionne même s'il est vide.
# go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/root/.cache/go-build"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/go"
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build743505095=/tmp/go-build -gno-record-gcc-switches"
# go version
go version go1.10.4 linux/amd64
# protoc --version
libprotoc 3.6.0
J'ai pu faire quelque chose comme Hello World. Il y a tellement de choses que je ne comprends pas, alors étudions tout en étudiant petit à petit.
Recommended Posts