Improve Go Roadmap (#7399)
* Go Basics. * Go Advanced. * 102,103,104,105,106 * Everything Else.pull/7404/head
parent
fae4899a2c
commit
63004475aa
46 changed files with 74 additions and 101 deletions
@ -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) |
||||||
|
@ -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) |
||||||
|
@ -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/). |
|
||||||
|
@ -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) |
||||||
|
@ -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) |
||||||
|
Loading…
Reference in new issue