groadmap
groadmap copied to clipboard
rodmap go
Topics to be covered on our YouTube channel»
Português
The intent of this guide is to give you an idea about the Go ecosystem and help guide your learning if you are confused. It is mainly focused on presenting the tools and concepts used in web development. Feel free to send comments
- suggestions or even a PR improving at some point.
I will be super happy to know that you would like to collaborate or that we helped in some way in your formation when it comes to Go.
Go Roadmap
Sumary
GO Basic & Intermediary
-
Basic & Intermediate Concepts
Variables, Types, and Operators
- generics
- constantsif/else, switch
- switch
- if / elseLoops (for, range)
- for
- rangeFunctions and Methods
- functions
- variadic functions
- return
- closures/anonymous functions
- methods
- deferData Structures (array, slice, map, struct)
- array
- slice
- make
- new
- maps
- structsPointers
- pointersTypes
- types
- type interface
- interface{}
Goroutines in Go
- Goroutine
- channel
- channel buffer
- select
- sync.Mutex
- sync.Map
- sync.WaitGroup
- sync.Pool
Runtime
- Runtime
- runtime.GOMAXPROCS
- runtime.NumCPU()
- runtime.NumGoroutine()
Go
-
Go Test
- go test
- go test -bench . -benchmem
- go test -coverprofile
- go test -fuzz=Fuzz
- [go test -run ^NameFunc$]
- [go test -v]Go Build & Go Run
- [CGO_ENABLED=0 go build]
- [go build -buildmode=plugin]
- [go build -gcflags -S]
- [go build -gcflags '-m -l']
- [go build -ldflags="-s -w"]
- [GOOS=linux GOARCH=amd64 go build]
- [go build GOARCH=wasm GOOS=js go build]
- [go help buildmode]
- go run .
- [go run -race .]Installation
- go install golang.org/x/website/tour@latest
Modules
-
Package & Import
- import
- import "fmt"
- import "my-pkg/util"
- package mypkgGo Module Features
- go.mod
- go.sum
- go mod init
- [go mod tidy]
- [go mod vendor]
- [go mod download]
- go env
- GO111MODULE=on
- GOARCH=amd64
- GOPRIVATE
- GOPROXY
- GOSUMDB
Pattern
- Padrões
- Builder
- Factory Method
- Abstract Factory
- Adapter
- Bridge
- Facade
- Composite
- Decorator
- Prototype
- Singleton
- Template Method
Fasthttp
-
Frameworks - Fiber
- GrameworkMiddleware
- Iu
- fiber-middlewareRoteamento
- fasthttp-routing
- atreugoWebsocket
- fast-http-socket
- fastws
Net/Http
Server
- [http.NewServeMux](https://pkg.go.dev/net/http#NewServeMux)
- [http.Server](https://gobootcamp.jeffotoni.com/en/pages/net_http_server/http-server.html)
- [http.HandlerFunc](https://pkg.go.dev/net/http#HandlerFunc)
- [http.Handle](https://pkg.go.dev/net/http#Handle)
- [http.Handler](https://gobootcamp.jeffotoni.com/en/pages/net_http_server/http_handler.html)
- [http.Status](https://pkg.go.dev/net/http#Status)
- [next.ServeHTTP](https://gobootcamp.jeffotoni.com/en/pages/net_http_server/http-server.html)
- [ListenAndServe](https://gobootcamp.jeffotoni.com/en/pages/net_http_server/listen-and-serve.html)
- [ListenAndServeTLS](https://pkg.go.dev/net/http#ListenAndServeTLS)
- [http.FileServer](https://gobootcamp.jeffotoni.com/en/pages/net_http_server/file-server.html)
- [http.Dir](https://pkg.go.dev/net/http#Dir)
- [http.StripPrefix](https://pkg.go.dev/net/http#StripPrefix)
- Embed
- [http.FS](https://pkg.go.dev/net/http#FS)
- html/template
- [template.ParseFiles](https://pkg.go.dev/html/template#ParseFiles)
- [template.Parse](https://pkg.go.dev/html/template#Parse)
- [template.ParseFS](https://pkg.go.dev/html/template#ParseFS)
- [template.New](https://pkg.go.dev/html/template#New)
- [template.Must](https://pkg.go.dev/html/template#Must)
- [template.Execute](https://pkg.go.dev/html/template#Execute)
- [template.ExecuteTemplate](https://pkg.go.dev/html/template#ExecuteTemplate)
Client
- [http.Transport](https://pkg.go.dev/net/http#Transport)
- [http.Client](https://gobootcamp.jeffotoni.com/en/pages/net_http_client/client.html)
- [http.Get](https://gobootcamp.jeffotoni.com/en/pages/net_http_client/http-get.html)
- [http.Post](https://gobootcamp.jeffotoni.com/en/pages/net_http_client/http-post.html)
- [http.PostForm](https://pkg.go.dev/net/http#PostForm)
- [ioutil.ReadAll(r io.Reader)](https://pkg.go.dev/io/ioutil#ReadAll)
- [http.NewRequest](https://gobootcamp.jeffotoni.com/en/pages/net_http_client/http-new-request.html)
- [http.NewRequestContext](https://pkg.go.dev/net/http#NewRequestContext)
- [Context.WithCancel](https://pkg.go.dev/context#WithCancel)
Web Frameworks
- [gin](https://gobootcamp.jeffotoni.com/en/pages/rest/gin.html)
- [echo](https://gobootcamp.jeffotoni.com/en/pages/rest/echo.html)
- [beego](https://gobootcamp.jeffotoni.com/en/pages/rest/beego.html)
- [iris](https://github.com/kataras/iris)
- [martini](https://github.com/go-martini/martini)
- gocraft
- [revel](https://github.com/revel/revel)
- [buffalo](https://github.com/gobuffalo/buffalo)
- [chi](https://gobootcamp.jeffotoni.com/en/pages/rest/chi.html)
- [macaron](https://gobootcamp.jeffotoni.com/en/pages/rest/macaron.html)
- [webgo](https://github.com/bnkamalesh/webgo)
- [quick](https://github.com/jeffotoni/quick)
Routers
- [alien](https://github.com/gernest/alien)
- [bellt](https://github.com/GuilhermeCaruso/bellt)
- [bone](https://github.com/go-zoo/bone)
- [bxog](https://github.com/claygod/Bxog)
- [goroute](https://github.com/cloudfoundry/gorouter)
- [httprouter](https://github.com/julienschmidt/httprouter)
- [httptreemux](https://github.com/dimfeld/httptreemux)
- [gorilla/mux](https://gobootcamp.jeffotoni.com/en/pages/router/gorilla-mux.html)
- [ozzo-routing](https://github.com/go-ozzo/ozzo-routing)
- pure
- [siesta](https://github.com/VividCortex/siesta)
- [vestigo](https://github.com/husobee/vestigo)
- [xmux](https://github.com/rs/xmux)
- [xujiajun/gorouter](https://github.com/xujiajun/gorouter)
Middlewares
- [negroni](https://github.com/urfave/negroni)
- [muxchain](https://github.com/stephens2424/muxchain)
- [go-wrap](https://github.com/hexdigest/gowrap)
- [interpose](https://github.com/carbocation/interpose)
- [rye](https://github.com/InVisionApp/rye)
Middeware Libs
- [CORS](https://docs.gofiber.io/api/middleware/cors)
- [rate limit](https://mauricio.github.io/2021/12/30/rate-limiting-in-go.html)
- [logging](https://gomanual.jeffotoni.com/pages/fiber/logger.html)
- [metrics](https://prometheus.io/docs/guides/go-application/)
- [auth](https://docs.gofiber.io/api/middleware/basicauth)
- tracing
- [limiter](https://docs.gofiber.io/api/middleware/limiter)
- [jwt](https://github.com/gofiber/jwt)
- [logger](https://gomanual.jeffotoni.com/pages/fiber/logger.html)
- [cache](https://gomanual.jeffotoni.com/pages/fiber/cache.html)
- Instrumentation
- [Prometheus](https://github.com/prometheus/prometheus)
- [Datadog](https://github.com/DataDog/datadog-agent)
- [New Relic](https://github.com/newrelic/go-agent)
- [loggly](https://github.com/segmentio/go-loggly)
Previous Knowledge
-
Git
- git
- git init
- git add .
- git commit
- git push
- git merge
- git rebase
- git log
- git diff
- git show
- git cloneDocker
- docker run
- docker build
- docker images
- docker push
- docker login
- docker ps -aRelational
- PostgreSQL
- MySql
- SqlServer
- Oracle
- MariaDBNoSql
- MongoDB
- Cassandra
- RavenDB
- RethinkDB
- CouchDB
- CockroachDB
- Redis
- Elasticsearch
- ArangoDBQueue
- RabbitMQ
- KubeMQ
- SQS Aws
- Pub/Sub Google Cloud
- Beanstalk
- ActiveMQStream
- Kafka
- Redpanda
- KubeMQ
- Nats
- Kinesis AwsProtocols
- Applications
- gRPC
- rpc
- xml-rpc
- WebSocket
- Serialization
- Protobuf Buffer
- gob
- msgpack
- bson
- Avro
- Thrift
- json
- xml
- tcp
- udp
- http
- http2
- http3
- MQTT