Improve Go Roadmap (#7399)

* Go Basics.

* Go Advanced.

* 102,103,104,105,106

* Everything Else.
pull/7404/head
Vedansh 2 months ago committed by GitHub
parent fae4899a2c
commit 63004475aa
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      src/data/roadmaps/golang/content/100-go-basics/101-variables.md
  2. 4
      src/data/roadmaps/golang/content/100-go-basics/102-data-types.md
  3. 2
      src/data/roadmaps/golang/content/100-go-basics/103-for-loop.md
  4. 5
      src/data/roadmaps/golang/content/100-go-basics/107-conditionals.md
  5. 11
      src/data/roadmaps/golang/content/100-go-basics/108-functions.md
  6. 7
      src/data/roadmaps/golang/content/100-go-basics/109-packages.md
  7. 2
      src/data/roadmaps/golang/content/100-go-basics/110-type-casting.md
  8. 2
      src/data/roadmaps/golang/content/100-go-basics/111-type-inference.md
  9. 2
      src/data/roadmaps/golang/content/100-go-basics/index.md
  10. 9
      src/data/roadmaps/golang/content/101-go-advanced/100-go-modules.md
  11. 8
      src/data/roadmaps/golang/content/101-go-advanced/102-types-and-type-assertions.md
  12. 2
      src/data/roadmaps/golang/content/101-go-advanced/104-context.md
  13. 5
      src/data/roadmaps/golang/content/101-go-advanced/105-goroutines.md
  14. 2
      src/data/roadmaps/golang/content/101-go-advanced/107-buffer.md
  15. 3
      src/data/roadmaps/golang/content/101-go-advanced/109-mutex.md
  16. 8
      src/data/roadmaps/golang/content/101-go-advanced/110-scheduler.md
  17. 2
      src/data/roadmaps/golang/content/102-go-building-clis/100-cobra.md
  18. 8
      src/data/roadmaps/golang/content/102-go-building-clis/101-urfave-cli.md
  19. 4
      src/data/roadmaps/golang/content/103-go-orms/index.md
  20. 2
      src/data/roadmaps/golang/content/104-go-web-frameworks/100-beego.md
  21. 2
      src/data/roadmaps/golang/content/104-go-web-frameworks/102-revel.md
  22. 4
      src/data/roadmaps/golang/content/104-go-web-frameworks/103-echo.md
  23. 4
      src/data/roadmaps/golang/content/104-go-web-frameworks/104-gorilla.md
  24. 4
      src/data/roadmaps/golang/content/104-go-web-frameworks/105-gofiber.md
  25. 4
      src/data/roadmaps/golang/content/104-go-web-frameworks/106-buffalo.md
  26. 2
      src/data/roadmaps/golang/content/105-go-logging/100-zerolog.md
  27. 2
      src/data/roadmaps/golang/content/105-go-logging/101-zap.md
  28. 4
      src/data/roadmaps/golang/content/105-go-logging/102-log-slog.md
  29. 5
      src/data/roadmaps/golang/content/106-go-realtime-communication/100-melody.md
  30. 4
      src/data/roadmaps/golang/content/106-go-realtime-communication/101-centrifugo.md
  31. 1
      src/data/roadmaps/golang/content/106-go-realtime-communication/index.md
  32. 2
      src/data/roadmaps/golang/content/107-go-api-clients/100-rest/100-heimdall.md
  33. 2
      src/data/roadmaps/golang/content/107-go-api-clients/100-rest/101-grequests.md
  34. 2
      src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/100-graphql-go.md
  35. 2
      src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/101-gqlgen.md
  36. 7
      src/data/roadmaps/golang/content/107-go-api-clients/101-graphql/index.md
  37. 2
      src/data/roadmaps/golang/content/108-go-testing-your-apps.md
  38. 4
      src/data/roadmaps/golang/content/109-go-microservices/101-rpcx.md
  39. 4
      src/data/roadmaps/golang/content/109-go-microservices/103-micro.md
  40. 6
      src/data/roadmaps/golang/content/109-go-microservices/104-go-zero.md
  41. 2
      src/data/roadmaps/golang/content/109-go-microservices/105-protocol-buffers.md
  42. 2
      src/data/roadmaps/golang/content/109-go-microservices/106-grpc-go.md
  43. 4
      src/data/roadmaps/golang/content/109-go-microservices/107-grpc-gateway.md
  44. 6
      src/data/roadmaps/golang/content/109-go-microservices/108-twirp.md
  45. 2
      src/data/roadmaps/golang/content/109-go-microservices/index.md

@ -1,6 +1,6 @@
# Variables in Go # Variables in Go
Variable is the name given to a memory location to store a value of a specific [type](https://golangbot.com/types/). Go provides multiple ways to declare and use variables. Variable is the name given to a memory location to store a value of a specific type. Go provides multiple ways to declare and use variables.
Visit the following resources to learn more: Visit the following resources to learn more:

@ -2,10 +2,8 @@
Go is a statically typed programming language, which means each variable has a type defined at first and can only hold values with that type. There are two categories of types in Go: basics types and composite types. Go is a statically typed programming language, which means each variable has a type defined at first and can only hold values with that type. There are two categories of types in Go: basics types and composite types.
To learn more about types in Go, visit these resources :
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Basic data types](https://www.w3schools.com/go/go_data_types.php)
- [@official@Tour of Go: types](https://go.dev/tour/basics/11) - [@official@Tour of Go: types](https://go.dev/tour/basics/11)
- [@article@Go types with examples](https://golangbyexample.com/all-data-types-in-golang-with-examples/) - [@article@Go types with examples](https://golangbyexample.com/all-data-types-in-golang-with-examples/)
- [@article@Data Types](https://www.w3schools.com/go/go_data_types.php)

@ -11,4 +11,4 @@ Visit the following resources to learn more:
- [@official@For Loop in Golang](https://go.dev/tour/flowcontrol/1) - [@official@For Loop in Golang](https://go.dev/tour/flowcontrol/1)
- [@official@Effective Go: For loop](https://go.dev/doc/effective_go#for) - [@official@Effective Go: For loop](https://go.dev/doc/effective_go#for)
- [@article@Go by Example: For loop](https://gobyexample.com/for) - [@article@Go by Example: For loop](https://gobyexample.com/for)
- [@article@5 basic for loop patterns](https://yourbasic.org/golang/for-loop/) - [@article@5 Basic for Loop Patterns](https://yourbasic.org/golang/for-loop/)

@ -9,7 +9,6 @@ Conditional statements are used to run code only if a certain condition is true.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@Effective Go: `if` statement](https://go.dev/doc/effective_go#if) - [@official@Effective Go: `if` statement](https://go.dev/doc/effective_go#if)
- [@article@Basic conditional patterns](https://yourbasic.org/golang/if-else-statement)
- [@article@Go by Example: If-Else](https://gobyexample.com/if-else) - [@article@Go by Example: If-Else](https://gobyexample.com/if-else)
- [@article@Golang programs If-Else statement](https://www.golangprograms.com/golang-if-else-statements.html) - [@article@Golang If-Else Statements](https://www.golangprograms.com/golang-if-else-statements.html)
- [@article@Golang programs `switch` case](https://www.golangprograms.com/golang-switch-case-statements.html) - [@article@Golang Switch Case Programs](https://www.golangprograms.com/golang-switch-case-statements.html)

@ -1,14 +1,9 @@
# Functions # Functions
Discover how functions work in Go, the list of resources below will cover: A function is a block of code that performs a specific task. It's a reusable unit of code that can be called from other parts of your program. Functions help you organize your code, make it more modular, and improve readability.
- How to define and call functions in Go?
- Named returns in Go?
- Handle multiple return types.
- Different function types in Go.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Go by Example: Functions](https://gobyexample.com/functions)
- [@article@Functions in go](https://www.golangprograms.com/go-language/functions.html)
- [@official@Effective Go: Functions](https://go.dev/doc/effective_go#functions) - [@official@Effective Go: Functions](https://go.dev/doc/effective_go#functions)
- [@article@Go by Example: Functions](https://gobyexample.com/functions)
- [@article@Functions in Go](https://www.golangprograms.com/go-language/functions.html)

@ -4,8 +4,7 @@ Packages are the most powerful part of the Go language. The purpose of a package
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@Go Packages Explorer](https://pkg.go.dev/)
- [@official@Standard library](https://pkg.go.dev/std)
- [@article@How to create a package in Go](https://www.golang-book.com/books/intro/11) - [@article@How to create a package in Go](https://www.golang-book.com/books/intro/11)
- [@official@How to manage external dependencies in Go](https://go.dev/doc/modules/managing-dependencies) - [@official@How to Manage External Dependencies in Go](https://go.dev/doc/modules/managing-dependencies)
- [@article@Go Packages explorer](https://pkg.go.dev/)
- [@article@Standard library](https://pkg.go.dev/std)
- [@article@Go Packages](https://www.programiz.com/golang/packages)

@ -1,6 +1,6 @@
# Type Casting # Type Casting
Go doesn't support automatic type conversion, but it allows type casting, which is the process of explicitly changing the variable type. To learn more about typecasting, visit these resources : Go doesn't support automatic type conversion, but it allows type casting, which is the process of explicitly changing the variable type.
Visit the following resources to learn more: Visit the following resources to learn more:

@ -4,5 +4,5 @@ Type inference gives go the capability to detect the type of a value without bei
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Go Variables: Type Inference](https://www.callicoder.com/golang-variables-zero-values-type-inference/#type-inference)
- [@official@Tour of Go: Type Inference](https://go.dev/tour/basics/14) - [@official@Tour of Go: Type Inference](https://go.dev/tour/basics/14)
- [@article@Go Variables: Type Inference](https://www.callicoder.com/golang-variables-zero-values-type-inference/#type-inference)

@ -4,6 +4,6 @@ Learn the common concepts of Go like variables, loops, conditional statements, f
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@Official Go Tutorial](https://go.dev/doc/tutorial/) - [@official@Go Tutorial](https://go.dev/doc/tutorial/)
- [@article@W3 Schools Go Tutorial](https://www.w3schools.com/go/index.php) - [@article@W3 Schools Go Tutorial](https://www.w3schools.com/go/index.php)
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh) - [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)

@ -2,15 +2,10 @@
Go modules are a group of related packages that are versioned and distributed together. They specify the requirements of our project, list all the required dependencies, and help us keep track of the specific versions of installed dependencies. Go modules are a group of related packages that are versioned and distributed together. They specify the requirements of our project, list all the required dependencies, and help us keep track of the specific versions of installed dependencies.
Modules are identified by a module path that is declared in the first line of the go.mod file in our project.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@Go Modules](https://go.dev/blog/using-go-modules) - [@official@Go Modules](https://go.dev/blog/using-go-modules)
- [@video@Go Modules](https://www.youtube.com/watch?v=9cV1KESTJRc)
- [@article@DigitalOcean: How to use Go Modules](https://www.digitalocean.com/community/tutorials/how-to-use-go-modules) - [@article@DigitalOcean: How to use Go Modules](https://www.digitalocean.com/community/tutorials/how-to-use-go-modules)
- [@video@Go Modules Explained in 5 Minutes (by Golang Dojo on YouTube)](https://youtu.be/7xSxIwWJ9R4) - [@video@Go Modules](https://www.youtube.com/watch?v=9cV1KESTJRc)
- [@official@How to create a module in Go](https://go.dev/doc/tutorial/create-module) - [@video@Go Modules Explained in 5 Minutes](https://youtu.be/7xSxIwWJ9R4)
- [@official@How to use modules in Go](https://go.dev/blog/using-go-modules)
- [@article@How to modify existing projects to use Go modules](https://jfrog.com/blog/converting-projects-for-go-modules/)
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh) - [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)

@ -1,10 +1,8 @@
# Types and type assertions # Types and type assertions
Types in Golang specify the data type that a valid Go variable can hold. Golang has four categories of Types including Basic, Aggregate, Reference, and Interface Types Types in Golang specify the data type that a valid Go variable can hold. Golang has four categories of Types including Basic, Aggregate, Reference, and Interface Types. Type assertions in Golang provide access to the exact type of variable of an interface.
Type assertions in Golang provide access to the exact type of variable of an interface.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@Types Assertions ](https://go.dev/tour/methods/15) - [@official@Types Assertions](https://go.dev/tour/methods/15)
- [@video@Go Syntax - Type Assertions ](https://youtube.com/watch?v=vtGbi9bGr3s) - [@video@Go Syntax - Type Assertions](https://youtube.com/watch?v=vtGbi9bGr3s)

@ -4,7 +4,7 @@ The `context` package provides a standard way to solve the problem of managing t
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Go Context](https://pkg.go.dev/context) - [@official@Go Context](https://pkg.go.dev/context)
- [@article@Go by Example: Context](https://gobyexample.com/context) - [@article@Go by Example: Context](https://gobyexample.com/context)
- [@article@Digital Ocean: How to Use Contexts in Go](https://www.digitalocean.com/community/tutorials/how-to-use-contexts-in-go) - [@article@Digital Ocean: How to Use Contexts in Go](https://www.digitalocean.com/community/tutorials/how-to-use-contexts-in-go)
- [@video@Context in Go](https://www.youtube.com/watch?v=LSzR0VEraWw) - [@video@Context in Go](https://www.youtube.com/watch?v=LSzR0VEraWw)

@ -1,8 +1,6 @@
# Goroutines # Goroutines
Goroutines allow us to write concurrent programs in Go. Things like web servers handling thousands of requests or a website rendering new pages while also concurrently making network requests are a few example of concurrency. Goroutines allow us to write concurrent programs in Go. Things like web servers handling thousands of requests or a website rendering new pages while also concurrently making network requests are a few example of concurrency. In Go, each of these concurrent tasks are called `Goroutines`.
In Go, each of these concurrent tasks are called `Goroutines`.
Visit the following resources to learn more: Visit the following resources to learn more:
@ -11,5 +9,4 @@ Visit the following resources to learn more:
- [@video@GoRoutines](https://www.youtube.com/watch?v=LvgVSSpwND8) - [@video@GoRoutines](https://www.youtube.com/watch?v=LvgVSSpwND8)
- [@video@Understanding Concurrency](https://www.youtube.com/watch?v=V-0ifUKCkBI) - [@video@Understanding Concurrency](https://www.youtube.com/watch?v=V-0ifUKCkBI)
- [@article@Go by Example: Goroutines](https://gobyexample.com/goroutines) - [@article@Go by Example: Goroutines](https://gobyexample.com/goroutines)
- [@video@Golang Goroutine Basics You MUST Learn! (by Golang Dojo on YouTube)](https://youtu.be/oHIbeTmmTaA)
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh) - [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)

@ -4,6 +4,6 @@ The `buffer` belongs to the byte package of the Go language, and we can use thes
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Buffer Examples](https://pkg.go.dev/bytes#example-Buffer) - [@official@Buffer Examples](https://pkg.go.dev/bytes#example-Buffer)
- [@article@Buffer](https://www.educba.com/golang-buffer/) - [@article@Buffer](https://www.educba.com/golang-buffer/)
- [@video@Buffers in Golang](https://www.youtube.com/watch?v=NoDRq6Twkts) - [@video@Buffers in Golang](https://www.youtube.com/watch?v=NoDRq6Twkts)

@ -1,7 +1,8 @@
# Mutex # Mutex
Go allows us to run code concurrently using goroutines. However, when concurrent processes access the same piece of data, it can lead to [race conditions](https://www.sohamkamani.com/golang/data-races/). Mutexes are data structures provided by the [sync](https://pkg.go.dev/sync/) package. They can help us place a lock on different sections of data so that only one goroutine can access it at a time. Go allows us to run code concurrently using goroutines. However, when concurrent processes access the same piece of data, it can lead to race conditions. Mutexes are data structures provided by the sync package. They can help us place a lock on different sections of data so that only one goroutine can access it at a time.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Using a Mutex in Go with Examples](https://www.sohamkamani.com/golang/mutex/) - [@article@Using a Mutex in Go with Examples](https://www.sohamkamani.com/golang/mutex/)
- [@article@Sync Package](https://pkg.go.dev/sync/)

@ -1,12 +1,10 @@
# Go Scheduler # Go Scheduler
Go Scheduler allows us to understand more deeply about how Golang works internally. In terms of logical processors, Go Scheduler allows us to understand more deeply about how Golang works internally. In terms of logical processors, cores, threads, pool cache, context switching etc. The Go scheduler is part of the Go runtime, and the Go runtime is built into your application.
cores, threads, pool cache, context switching etc. The Go scheduler is part of the Go runtime, and the Go runtime
is built into your application
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@OS Scheduler](https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html) - [@article@OS Scheduler - 1](https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.html)
- [@article@Go Scheduler](https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html) - [@article@Go Scheduler - 2](https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part2.html)
- [@article@Illustrated Tales of Go Runtime Scheduler](https://medium.com/@ankur_anand/illustrated-tales-of-go-runtime-scheduler-74809ef6d19b) - [@article@Illustrated Tales of Go Runtime Scheduler](https://medium.com/@ankur_anand/illustrated-tales-of-go-runtime-scheduler-74809ef6d19b)
- [@video@Go scheduler: Implementing language with lightweight concurrency](https://www.youtube.com/watch?v=-K11rY57K7k&ab_channel=Hydra) - [@video@Go scheduler: Implementing language with lightweight concurrency](https://www.youtube.com/watch?v=-K11rY57K7k&ab_channel=Hydra)

@ -4,7 +4,7 @@ Cobra is a library for creating powerful modern CLI applications.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Cobra Github Repo](https://github.com/spf13/cobra) - [@opensource@Cobra Github](https://github.com/spf13/cobra)
- [@official@Cobra Website](https://cobra.dev/) - [@official@Cobra Website](https://cobra.dev/)
- [@article@Cobra Package Documentation](https://pkg.go.dev/github.com/spf13/cobra) - [@article@Cobra Package Documentation](https://pkg.go.dev/github.com/spf13/cobra)
- [@video@How to write beautiful Golang CLI](https://www.youtube.com/watch?v=SSRIn5DAmyw) - [@video@How to write beautiful Golang CLI](https://www.youtube.com/watch?v=SSRIn5DAmyw)

@ -1,11 +1,11 @@
# Urfave cli # Urfave CLI
Urfave cli is a simple, fast, and fun package for building command line apps in Go. Urfave CLI is a simple, fast, and fun package for building command line apps in Go.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Urfave cli Github Repo](https://github.com/urfave/cli) - [@opensource@Urfave CLI](https://github.com/urfave/cli)
- [@article@Urfave cli Website](https://cli.urfave.org/) - [@article@Urfave Website](https://cli.urfave.org/)
- [@article@How to Build cli in Go](https://blog.hackajob.co/how-to-build-cli-in-go/) - [@article@How to Build cli in Go](https://blog.hackajob.co/how-to-build-cli-in-go/)
- [@article@Building CLI using urfave cli](https://zerokspot.com/weblog/2021/01/25/building-a-cli-using-urfave-cli/) - [@article@Building CLI using urfave cli](https://zerokspot.com/weblog/2021/01/25/building-a-cli-using-urfave-cli/)
- [@feed@Explore top posts about CLI](https://app.daily.dev/tags/cli?ref=roadmapsh) - [@feed@Explore top posts about CLI](https://app.daily.dev/tags/cli?ref=roadmapsh)

@ -1,5 +1,3 @@
# ORMs # ORMs
Object–relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between type systems using object-oriented programming languages. This creates, in effect, a "virtual object database", hence a layer of abstraction, that can be used from within the programming language. Object–relational mapping (ORM, O/RM, and O/R mapping tool) in computer science is a programming technique for converting data between type systems using object-oriented programming languages. This creates, in effect, a "virtual object database", hence a layer of abstraction, that can be used from within the programming language. Most common ORM library in Go is GORM.
Most common ORM library in Go is [GORM](https://gorm.io/).

@ -4,4 +4,4 @@ Beego is used for rapid development of enterprise application in Go, including R
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Github Repository](https://github.com/beego/beego) - [@opensource@Beego/Beego](https://github.com/beego/beego)

@ -4,5 +4,5 @@ Revel organizes endpoints into Controllers. They provide easy data binding and f
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Revel](https://revel.github.io/tutorial/index.html) - [@official@Revel](https://revel.github.io/tutorial/index.html)
- [@article@Revel Packages](https://pkg.go.dev/github.com/revel/revel) - [@article@Revel Packages](https://pkg.go.dev/github.com/revel/revel)

@ -4,5 +4,5 @@ Echo is a performance-focused, extensible, open-source Go web application framew
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Github Repository](https://github.com/labstack/echo) - [@opensource@Echo](https://github.com/labstack/echo)
- [@article@Official Website](https://echo.labstack.com/) - [@official@Echo Website](https://echo.labstack.com/)

@ -4,5 +4,5 @@ Gorilla is a web toolkit for the Go programming language that provides useful, c
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Github Repository](https://github.com/gorilla) - [@opensource@Gorilla](https://github.com/gorilla)
- [@article@Official Website](https://www.gorillatoolkit.org/) - [@official@Gorilla Toolkit](https://www.gorillatoolkit.org/)

@ -4,5 +4,5 @@ Go Fiber is an Express-inspired framework for Golang. Go Fiber is a web framewor
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Github Repository](https://github.com/gofiber/fiber) - [@opensource@Fiber](https://github.com/gofiber/fiber)
- [@article@Official Website Docs](https://docs.gofiber.io/) - [@official@Official Docs](https://docs.gofiber.io/)

@ -4,5 +4,5 @@ Buffalo helps you to generate a web project that already has everything from fro
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Github Repository](https://github.com/gobuffalo/buffalo) - [@opensource@Gobuffalo](https://github.com/gobuffalo/buffalo)
- [@article@Official Website Docs](https://gobuffalo.io/) - [@official@Official Docs](https://gobuffalo.io/)

@ -6,4 +6,4 @@ Zerolog's API is designed to provide both a great developer experience and stunn
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@GitHub Repository](https://github.com/rs/zerolog) - [@opensource@Zerolog](https://github.com/rs/zerolog)

@ -4,4 +4,4 @@ Blazing fast, structured, leveled logging in Go.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@GitHub Repository](https://github.com/uber-go/zap) - [@opensource@Zap](https://github.com/uber-go/zap)

@ -4,8 +4,8 @@ The `log` and `log/slog` (since go 1.21) packages are the standard logging packa
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Official Documentation: log](https://pkg.go.dev/log) - [@official@Documentation: log](https://pkg.go.dev/log)
- [@article@Official Documentation: log/slog](https://pkg.go.dev/log/slog) `(since go 1.21)` - [@official@Documentation: slog](https://pkg.go.dev/log/slog)
- [@official@Go Blog: Structured Logging with slog](https://go.dev/blog/slog) - [@official@Go Blog: Structured Logging with slog](https://go.dev/blog/slog)
- [@article@Go by Example: Logging](https://gobyexample.com/logging) - [@article@Go by Example: Logging](https://gobyexample.com/logging)
- [@feed@Explore top posts about Logging](https://app.daily.dev/tags/logging?ref=roadmapsh) - [@feed@Explore top posts about Logging](https://app.daily.dev/tags/logging?ref=roadmapsh)

@ -1,7 +1,8 @@
# Melody # Melody
Melody is websocket framework based on [github.com/gorilla/websocket](https://github.com/gorilla/websocket) that abstracts away the tedious parts of handling websockets. It gets out of your way so you can write real-time apps. Melody is websocket framework based on gorilla/websocket that abstracts away the tedious parts of handling websockets. It gets out of your way so you can write real-time apps.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@GitHub Repository](https://github.com/olahol/melody) - [@opensource@Melody](https://github.com/olahol/melody)
- [@opensource@websocket](https://github.com/gorilla/websocket)

@ -4,5 +4,5 @@ Centrifugo is an open-source scalable real-time messaging server. Centrifugo can
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@GitHub Repository](https://github.com/centrifugal/centrifugo) - [@opensource@Centrifugo](https://github.com/centrifugal/centrifugo)
- [@article@Getting started](https://centrifugal.dev/docs/getting-started/introduction) - [@official@Getting Started](https://centrifugal.dev/docs/getting-started/introduction)

@ -1,6 +1,5 @@
# Go realtime communication # Go realtime communication
## What is real-time communication?
Just as it says in the name, real-time communication is the handling of requests concurrently and efficiently. Whether it is a chat/messaging app, an email service, a game server or any collaborative online project (for example, Excalidraw), there are a few different ways of handling real-time communication, but the most common is through the use of WebSockets. Other options for handling real-time communications include MQTT protocol and server-sent events, among others. Just as it says in the name, real-time communication is the handling of requests concurrently and efficiently. Whether it is a chat/messaging app, an email service, a game server or any collaborative online project (for example, Excalidraw), there are a few different ways of handling real-time communication, but the most common is through the use of WebSockets. Other options for handling real-time communications include MQTT protocol and server-sent events, among others.
Learn more from the following resources: Learn more from the following resources:

@ -10,4 +10,4 @@ All HTTP methods are exposed as a fluent interface.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@GitHub Repository](https://github.com/gojek/heimdall) - [@opensource@Heimdall](https://github.com/gojek/heimdall)

@ -11,4 +11,4 @@ Features:
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@GitHub Repository](https://github.com/levigross/grequests) - [@opensource@Grequests](https://github.com/levigross/grequests)

@ -6,6 +6,6 @@ Visit the following resources to learn more:
- [@article@Graphql-go homepage](https://graphql-go.github.io/graphql-go.org/) - [@article@Graphql-go homepage](https://graphql-go.github.io/graphql-go.org/)
- [@article@Graphql-go documentation](https://pkg.go.dev/github.com/graphql-go/graphql) - [@article@Graphql-go documentation](https://pkg.go.dev/github.com/graphql-go/graphql)
- [@opensource@Github Repository](https://github.com/graphql-go/graphql) - [@opensource@Graphql](https://github.com/graphql-go/graphql)
- [@video@GraphQL-Go - Golang Tutorial (by TechPractice on YouTube)](https://www.youtube.com/watch?v=YK7BQfQ84ws) - [@video@GraphQL-Go - Golang Tutorial (by TechPractice on YouTube)](https://www.youtube.com/watch?v=YK7BQfQ84ws)
- [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh) - [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh)

@ -4,6 +4,6 @@ According to their documentation, it's a Golang library for building GraphQL ser
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@Gqlgen website documentation](https://gqlgen.com/) - [@official@Gqlgen Documentation](https://gqlgen.com/)
- [@article@Introducing gqlgen: a GraphQL Server Generator for Go](https://99designs.com.au/blog/engineering/gqlgen-a-graphql-server-generator-for-go/) - [@article@Introducing gqlgen: a GraphQL Server Generator for Go](https://99designs.com.au/blog/engineering/gqlgen-a-graphql-server-generator-for-go/)
- [@video@GraphQL in Go - GQLGen Tutorial (by acklackl on YouTube)](https://www.youtube.com/watch?v=O6jYy421tGw) - [@video@GraphQL in Go - GQLGen Tutorial (by acklackl on YouTube)](https://www.youtube.com/watch?v=O6jYy421tGw)

@ -1,17 +1,14 @@
# Graphql # Graphql
`GraphQL` is a query language for [APIs](https://developer.mozilla.org/en-US/docs/Glossary/API), it offers a service that prioritizes giving just the data that the client requested and no more. `GraphQL` is a query language for APIs, it offers a service that prioritizes giving just the data that the client requested and no more. Besides, you don't need to be worried about breaking changes, versioning and backwards compatibility like REST APIs. Therefore you can implement your version and auto-document your API just by using `GraphQL`.
Besides, you don't need to be worried about breaking changes, versioning and backwards compatibility like REST APIs. Therefore you can implement your version and auto-document your API just by using `GraphQL`.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@GraphQL Website](https://graphql.org/) - [@roadmap@Visit Dedicated GraphQL Roadmap](https://roadmap.sh/graphql)
- [@official@Learn GraphQL](https://graphql.org/learn/) - [@official@Learn GraphQL](https://graphql.org/learn/)
- [@official@GraphQL Tutorials](https://www.graphql.com/tutorials/) - [@official@GraphQL Tutorials](https://www.graphql.com/tutorials/)
- [@article@Red Hat: What is GraphQL?](https://www.redhat.com/en/topics/api/what-is-graphql) - [@article@Red Hat: What is GraphQL?](https://www.redhat.com/en/topics/api/what-is-graphql)
- [@article@Digital Ocean: An Introduction to GraphQL](https://www.digitalocean.com/community/tutorials/an-introduction-to-graphql) - [@article@Digital Ocean: An Introduction to GraphQL](https://www.digitalocean.com/community/tutorials/an-introduction-to-graphql)
- [@article@How to GraphQL: The Fullstack Tutorial for GraphQL](https://www.howtographql.com/)
- [@video@GraphQL Full Course - Novice to Expert](https://www.youtube.com/watch?v=ed8SzALpx1Q) - [@video@GraphQL Full Course - Novice to Expert](https://www.youtube.com/watch?v=ed8SzALpx1Q)
- [@video@Beginner GraphQL Series (by Ben Awad on YouTube)](https://www.youtube.com/playlist?list=PLN3n1USn4xln0j_NN9k4j5hS1thsGibKi) - [@video@Beginner GraphQL Series (by Ben Awad on YouTube)](https://www.youtube.com/playlist?list=PLN3n1USn4xln0j_NN9k4j5hS1thsGibKi)
- [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh) - [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh)

@ -4,7 +4,7 @@ Go has a built-in testing command that we can use to test our program.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@Official Go Tutorial: Add a test](https://go.dev/doc/tutorial/add-a-test) - [@official@Go Tutorial: Add a Test](https://go.dev/doc/tutorial/add-a-test)
- [@article@Go by Example: Testing](https://gobyexample.com/testing) - [@article@Go by Example: Testing](https://gobyexample.com/testing)
- [@article@YourBasic Go: Table-driven unit tests](https://yourbasic.org/golang/table-driven-unit-test/) - [@article@YourBasic Go: Table-driven unit tests](https://yourbasic.org/golang/table-driven-unit-test/)
- [@article@Learn Go with Tests](https://quii.gitbook.io/learn-go-with-tests/) - [@article@Learn Go with Tests](https://quii.gitbook.io/learn-go-with-tests/)

@ -9,6 +9,6 @@ Rpcx is a RPC (Remote Procedure Call) framework like Alibaba Dubbo and Weibo Mot
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Rpcx English Documentation](https://en.doc.rpcx.io/)
- [@opensource@Rpcx Github](https://github.com/smallnest/rpcx)
- [@official@Rpcx Official Website](https://rpcx.io/) - [@official@Rpcx Official Website](https://rpcx.io/)
- [@official@Rpcx Documentation](https://en.doc.rpcx.io/)
- [@opensource@Rpcx](https://github.com/smallnest/rpcx)

@ -4,5 +4,5 @@ It is an API first development platform. It leverages the microservices architec
Visit the following resources to learn more: Visit the following resources to learn more:
- [@official@Official Website](https://micro.dev/) - [@official@Micro Website](https://micro.dev/)
- [@opensource@Micro Github](https://github.com/micro/micro) - [@opensource@Micro](https://github.com/micro/micro)

@ -4,7 +4,7 @@ go-zero is a web and rpc framework with lots of engineering best practices built
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Go-zero](https://go-zero.dev/) - [@official@Go-zero](https://go-zero.dev/)
- [@article@Go-zero Docs](https://go-zero.dev/docs/introduction) - [@official@Go-zero Docs](https://go-zero.dev/docs/introduction)
- [@opensource@GitHub Repository](https://github.com/zeromicro/go-zero) - [@opensource@Go-Zero](https://github.com/zeromicro/go-zero)
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh) - [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)

@ -11,7 +11,7 @@ Some of the advantages of using protocol buffers include:
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Protobuf Github](https://github.com/protocolbuffers/protobuf/) - [@opensource@Protobuf](https://github.com/protocolbuffers/protobuf/)
- [@article@Protobuf Doc](https://developers.google.com/protocol-buffers/) - [@article@Protobuf Doc](https://developers.google.com/protocol-buffers/)
- [@article@Protobuf with Go](https://developers.google.com/protocol-buffers/docs/gotutorial/) - [@article@Protobuf with Go](https://developers.google.com/protocol-buffers/docs/gotutorial/)
- [@feed@Explore top posts about Backend Development](https://app.daily.dev/tags/backend?ref=roadmapsh) - [@feed@Explore top posts about Backend Development](https://app.daily.dev/tags/backend?ref=roadmapsh)

@ -4,7 +4,7 @@ Go language implementation of gRPC(gRPC is a technology for implementing RPC API
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@gRPC-go Github](https://github.com/grpc/grpc-go/) - [@opensource@gRPC-go](https://github.com/grpc/grpc-go/)
- [@article@gRPC-go Doc](https://pkg.go.dev/google.golang.org/grpc/) - [@article@gRPC-go Doc](https://pkg.go.dev/google.golang.org/grpc/)
- [@official@Basic tutorial introduction to gRPC in Go.](https://grpc.io/docs/languages/go/basics/) - [@official@Basic tutorial introduction to gRPC in Go.](https://grpc.io/docs/languages/go/basics/)
- [@feed@Explore top posts about gRPC](https://app.daily.dev/tags/grpc?ref=roadmapsh) - [@feed@Explore top posts about gRPC](https://app.daily.dev/tags/grpc?ref=roadmapsh)

@ -4,6 +4,6 @@ gRPC-Gateway creates a layer over gRPC services that will act as a RESTful servi
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@Grpc-gateway Github](https://github.com/grpc-ecosystem/grpc-gateway/) - [@opensource@Grpc-gateway](https://github.com/grpc-ecosystem/grpc-gateway/)
- [@article@Grpc-gateway Doc](https://grpc-ecosystem.github.io/grpc-gateway/) - [@official@Grpc-gateway Doc](https://grpc-ecosystem.github.io/grpc-gateway/)
- [@feed@Explore top posts about gRPC](https://app.daily.dev/tags/grpc?ref=roadmapsh) - [@feed@Explore top posts about gRPC](https://app.daily.dev/tags/grpc?ref=roadmapsh)

@ -2,9 +2,7 @@
Twirp is a framework for service-to-service communication emphasizing simplicity and minimalism. It generates routing and serialization from API definition files and lets you focus on your application's logic instead of thinking about folderol like HTTP methods and paths and JSON. Twirp is a framework for service-to-service communication emphasizing simplicity and minimalism. It generates routing and serialization from API definition files and lets you focus on your application's logic instead of thinking about folderol like HTTP methods and paths and JSON.
Twirp is similar to gRPC, but without the custom HTTP server and transport implementations: it runs on the standard library's extremely-well-tested-and-high-performance net/http Server. It can run on HTTP 1.1, not just http/2, and supports JSON serialization for easy debugging.
Visit the following resources to learn more: Visit the following resources to learn more:
- [@opensource@GitHub Repository](https://github.com/twitchtv/twirp) - [@opensource@Twirp](https://github.com/twitchtv/twirp)
- [@article@Getting started](https://twitchtv.github.io/twirp/docs/intro.html) - [@official@Getting Started](https://twitchtv.github.io/twirp/docs/intro.html)

@ -4,7 +4,7 @@ Microservices are an architectural approach to software development that allows
Visit the following resources to learn more: Visit the following resources to learn more:
- [@article@Introduction to microservices](https://developer.ibm.com/learningpaths/get-started-application-modernization/intro-microservices/introduction/) - [@article@Introduction to Microservices](https://developer.ibm.com/learningpaths/get-started-application-modernization/intro-microservices/introduction/)
- [@official@Microservice Patterns and Resources by Chris Richardson](https://microservices.io/index.html) - [@official@Microservice Patterns and Resources by Chris Richardson](https://microservices.io/index.html)
- [@article@Microservices AntiPatterns and Pitfalls - Mark Richards](https://www.oreilly.com/content/microservices-antipatterns-and-pitfalls/) - [@article@Microservices AntiPatterns and Pitfalls - Mark Richards](https://www.oreilly.com/content/microservices-antipatterns-and-pitfalls/)
- [@article@Building Microservices, 2nd Edition - Sam Newman](https://samnewman.io/books/building_microservices_2nd_edition/) - [@article@Building Microservices, 2nd Edition - Sam Newman](https://samnewman.io/books/building_microservices_2nd_edition/)

Loading…
Cancel
Save