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 vieux
helloworld.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