2020-08-31 12:43:29 +00:00
|
|
|
|
# Repository für Beispiele des "Microservices mit Go" Buchs
|
|
|
|
|
|
|
|
|
|
Das Repository beinhaltet die Codebeispiele für das Buch `Microservices mit Go` des Rheinwerk Verlags:
|
|
|
|
|
|
|
|
|
|
https://www.rheinwerk-verlag.de/microservices-mit-go-konzepte-werkzeuge-best-practices/
|
2020-10-21 04:05:47 +00:00
|
|
|
|
|
|
|
|
|
Der aktuelle Stand befinden sich immer unter: https://github.com/SourceFellows/gobuch
|
|
|
|
|
|
|
|
|
|
## Beispiele
|
|
|
|
|
|
|
|
|
|
Folgende Beispielprojekte sind in diesem Repository enthalten:
|
|
|
|
|
|
|
|
|
|
* 1 Einführung
|
|
|
|
|
* [hello-interface](hello-interface)
|
|
|
|
|
* [hello-channel](hello-channel)
|
|
|
|
|
* [hello-go-channel](hello-go-channel)
|
|
|
|
|
* [hello-channel-post](hello-channel-post)
|
2020-10-21 04:09:16 +00:00
|
|
|
|
* [cplusplus](hello-world/cplusplus) - Compilierzeiten
|
|
|
|
|
* [go](hello-world/go) - Compilierzeiten
|
|
|
|
|
* [java](hello-world/java) - Compilierzeiten
|
|
|
|
|
* [javascript](hello-world/javascript) - Compilierzeiten
|
|
|
|
|
* [python](hello-world/python) - Compilierzeiten
|
|
|
|
|
* [typescript](hello-world/typescript) - Compilierzeiten
|
2020-10-21 04:05:47 +00:00
|
|
|
|
|
|
|
|
|
* 2 Die Grundlagen von Go
|
|
|
|
|
* [collection-array](go-language-sample/collection-array)
|
|
|
|
|
* [collection-array-slice](go-language-sample/collection-array-slice)
|
|
|
|
|
* [collection-capa](go-language-sample/collection-capa)
|
|
|
|
|
* [collection-for-range](go-language-sample/collection-for-range)
|
|
|
|
|
* [defer](go-language-sample/defer)
|
|
|
|
|
* [defer-file-open](go-language-sample/defer-file-open)
|
|
|
|
|
* [defer-lock](go-language-sample/defer-lock)
|
|
|
|
|
* [errors](go-language-sample/errors)
|
|
|
|
|
* [errors-new](go-language-sample/errors-new)
|
|
|
|
|
* [errors-owntyp](go-language-sample/errors-owntyp)
|
|
|
|
|
* [errors-owntyp-wrap](go-language-sample/errors-owntyp-wrap)
|
|
|
|
|
* [fmt-package](go-language-sample/fmt-package)
|
|
|
|
|
* [for-range](go-language-sample/for-range)
|
|
|
|
|
* [pointer](go-language-sample/pointer)
|
|
|
|
|
* [pointer-parameter](go-language-sample/pointer-parameter)
|
|
|
|
|
* [pointer-receiver](go-language-sample/pointer-receiver)
|
|
|
|
|
* [pointer-struct](go-language-sample/pointer-struct)
|
|
|
|
|
* [sampledoc](go-language-sample/sampledoc)
|
|
|
|
|
* [switch-case](go-language-sample/switch-case)
|
|
|
|
|
* [switch-case-falltrough](go-language-sample/switch-case-falltrough)
|
|
|
|
|
* [switch-case-no-expression](go-language-sample/switch-case-no-expression)
|
|
|
|
|
* [type-alias-definition](go-language-sample/type-alias-definition)
|
|
|
|
|
* [type-definition](go-language-sample/type-definition)
|
|
|
|
|
* [type-definition-assertion](go-language-sample/type-definition-assertion)
|
|
|
|
|
* [type-definition-interface](go-language-sample/type-definition-interface)
|
|
|
|
|
* [type-definition-interface-receiver](go-language-sample/type-definition-interface-receiver)
|
|
|
|
|
* [type-definition-struct](go-language-sample/type-definition-struct)
|
|
|
|
|
* [type-definition-switch](go-language-sample/type-definition-switch)
|
|
|
|
|
* [type-failure](go-language-sample/type-failure)
|
|
|
|
|
* [varadic-parameter](go-language-sample/varadic-parameter)
|
|
|
|
|
* [somelib](somelib)
|
|
|
|
|
* [vscode-first](vscode-first)
|
|
|
|
|
* [first-module-dependency](first-module-dependency)
|
|
|
|
|
* [library-dependency](library-dependency)
|
|
|
|
|
* [module-logrus](module-logrus)
|
|
|
|
|
|
|
|
|
|
* 3 Microservices
|
|
|
|
|
* [container](microservices/container)
|
|
|
|
|
* [default-mux-demo](microservices/default-mux-demo)
|
|
|
|
|
* [formrequest](microservices/formrequest)
|
|
|
|
|
* [go-channel](microservices/go-channel)
|
|
|
|
|
* [gorilla-mux](microservices/gorilla-mux)
|
|
|
|
|
* [gorm](microservices/gorm)
|
|
|
|
|
* [gorm-hooks](microservices/gorm-hooks)
|
|
|
|
|
* [gorm-relation](microservices/gorm-relation)
|
|
|
|
|
* [grpc](microservices/grpc)
|
|
|
|
|
* [hanlder-impl](microservices/hanlder-impl)
|
|
|
|
|
* [http-client](microservices/http-client)
|
|
|
|
|
* [http-client-circut-breaker](microservices/http-client-circut-breaker)
|
|
|
|
|
* [http-client-config](microservices/http-client-config)
|
|
|
|
|
* [http-client-ssl-cert](microservices/http-client-ssl-cert)
|
|
|
|
|
* [http-metod-matching](microservices/http-metod-matching)
|
|
|
|
|
* [http-ratelimit](microservices/http-ratelimit)
|
|
|
|
|
* [http-registration](microservices/http-registration)
|
|
|
|
|
* [http-retry](microservices/http-retry)
|
|
|
|
|
* [httpsserver](microservices/httpsserver)
|
|
|
|
|
* [httpsservercert](microservices/httpsservercert)
|
|
|
|
|
* [jsonhandling](microservices/jsonhandling)
|
|
|
|
|
* [jsonservice](microservices/jsonservice)
|
|
|
|
|
* [jwt](microservices/jwt)
|
|
|
|
|
* [letscrypt](microservices/letscrypt)
|
|
|
|
|
* [logging](microservices/logging)
|
|
|
|
|
* [middleware](microservices/middleware)
|
|
|
|
|
* [mongodb](microservices/mongodb)
|
|
|
|
|
* [mongodb-update](microservices/mongodb-update)
|
|
|
|
|
* [nats](microservices/nats)
|
|
|
|
|
* [oracle-db-connection](microservices/oracle-db-connection)
|
|
|
|
|
* [oracle-db-connection-prepared-statement](microservices/oracle-db-connection-prepared-statement)
|
|
|
|
|
* [oracle-db-connection-write](microservices/oracle-db-connection-write)
|
|
|
|
|
* [oracle-db-connection-write-tx](microservices/oracle-db-connection-write-tx)
|
|
|
|
|
* [prometheus](microservices/prometheus)
|
|
|
|
|
* [prometheus-metrics](microservices/prometheus-metrics)
|
|
|
|
|
* [rfc7808](microservices/rfc7808)
|
|
|
|
|
* [simple-http](microservices/simple-http)
|
|
|
|
|
* [best-practices-generator-function](concurrency/best-practices-generator-function)
|
|
|
|
|
* [best-practices-multiplexer](concurrency/best-practices-multiplexer)
|
|
|
|
|
* [best-practices-multiplexer-select](concurrency/best-practices-multiplexer-select)
|
|
|
|
|
* [best-practices-sync](concurrency/best-practices-sync)
|
|
|
|
|
* [best-practices-timeout](concurrency/best-practices-timeout)
|
|
|
|
|
* [channel-mit-close](concurrency/channel-mit-close)
|
|
|
|
|
* [channel-range](concurrency/channel-range)
|
|
|
|
|
* [channels](concurrency/channels)
|
|
|
|
|
* [first-go-routine](concurrency/first-go-routine)
|
|
|
|
|
* [first-go-routine-mit-channel](concurrency/first-go-routine-mit-channel)
|
|
|
|
|
* [graceful-shutdown](concurrency/graceful-shutdown)
|
|
|
|
|
* [java-threads-beispiel](concurrency/java-threads-beispiel)
|
|
|
|
|
* [application-configuration](configuration/application-configuration)
|
|
|
|
|
* [application-configuration-os](configuration/application-configuration-os)
|
|
|
|
|
* [application-configuration-viper](configuration/application-configuration-viper)
|
|
|
|
|
|
|
|
|
|
* 4 Die Qualitätssicherung
|
|
|
|
|
* [http-server-test](quality/http-server-test)
|
|
|
|
|
* [http-server-test.v1](quality/http-server-test.v1)
|
|
|
|
|
* [http-server-test.v2](quality/http-server-test.v2)
|
|
|
|
|
* [http-server-test.v3](quality/http-server-test.v3)
|
|
|
|
|
* [unittest](quality/unittest)
|
|
|
|
|
|
|
|
|
|
* 5 Best Practices – idiomatisches und effektives Go
|
|
|
|
|
* [context](best-practices/context)
|
|
|
|
|
* [context-http-server](best-practices/context-http-server)
|
|
|
|
|
* [context-loop](best-practices/context-loop)
|
|
|
|
|
* [context-value](best-practices/context-value)
|
|
|
|
|
* [context-value-nono](best-practices/context-value-nono)
|
|
|
|
|
* [empty-string-check](best-practices/empty-string-check)
|
|
|
|
|
* [error-behaviour](best-practices/error-behaviour)
|
|
|
|
|
* [error-handling](best-practices/error-handling)
|
|
|
|
|
* [error-handling-2](best-practices/error-handling-2)
|
|
|
|
|
* [error-handling-3](best-practices/error-handling-3)
|
|
|
|
|
* [file-io](best-practices/file-io)
|
|
|
|
|
* [file-io-large](best-practices/file-io-large)
|
|
|
|
|
* [force-interface](best-practices/force-interface)
|
|
|
|
|
* [goroutine-pooling](best-practices/goroutine-pooling)
|
|
|
|
|
* [logging-defer](best-practices/logging-defer)
|
|
|
|
|
* [map-contains](best-practices/map-contains)
|
|
|
|
|
* [project-structure](best-practices/project-structure)
|
|
|
|
|
* [single-method-interface](best-practices/single-method-interface)
|
|
|
|
|
* [struct-to-text](best-practices/struct-to-text)
|
|
|
|
|
* [synchron-api](best-practices/synchron-api)
|
|
|
|
|
|
|
|
|
|
* 6 Go-Service an die Cloud anbinden
|
|
|
|
|
* [aws-beanstak-sample](cloud-provider/aws-beanstak-sample)
|
|
|
|
|
* [aws-lambda-go](cloud-provider/aws-lambda-go)
|
|
|
|
|
* [azure-kubernetes](cloud-provider/azure-kubernetes)
|
|
|
|
|
* [docker-compose](cloud-provider/docker-compose)
|
|
|
|
|
* [docker-sample](cloud-provider/docker-sample)
|
|
|
|
|
* [docker-sample-multistage](cloud-provider/er-sample-multistage)
|
|
|
|
|
* [go-cloud](cloud-provider/go-cloud)
|
|
|
|
|
* [google-cloud-hello](cloud-provider/google-cloud-hello)
|
|
|
|
|
* [google-cloud-sample](cloud-provider/google-cloud-sample)
|
|
|
|
|
* [minikube-sample](cloud-provider/minikube-sample)
|