mirror of
https://github.com/kamranahmedse/developer-roadmap.git
synced 2026-09-24 15:00:31 +08:00
Add golang roadmap content
This commit is contained in:
@@ -0,0 +1 @@
|
||||
# Anonymous Functions
|
||||
@@ -0,0 +1 @@
|
||||
# Array to Slice Conversion
|
||||
@@ -0,0 +1 @@
|
||||
# Arrays
|
||||
@@ -0,0 +1 @@
|
||||
# beego
|
||||
@@ -0,0 +1 @@
|
||||
# Benchmarks
|
||||
@@ -0,0 +1 @@
|
||||
# Boolean
|
||||
@@ -0,0 +1 @@
|
||||
# break
|
||||
@@ -0,0 +1 @@
|
||||
# bubbletea
|
||||
@@ -0,0 +1 @@
|
||||
# Buffered vs Unbuffered
|
||||
@@ -0,0 +1 @@
|
||||
# bufio
|
||||
@@ -0,0 +1 @@
|
||||
# Build Constraints & Tags
|
||||
@@ -0,0 +1 @@
|
||||
# Build Tags
|
||||
@@ -0,0 +1 @@
|
||||
# Building CLIs
|
||||
@@ -0,0 +1 @@
|
||||
# Building Executables
|
||||
@@ -0,0 +1 @@
|
||||
# Call by Value
|
||||
@@ -0,0 +1 @@
|
||||
# Capacity and Growth
|
||||
@@ -0,0 +1 @@
|
||||
# Centrifugo
|
||||
@@ -0,0 +1 @@
|
||||
# CGO Basics
|
||||
@@ -0,0 +1 @@
|
||||
# Channels
|
||||
@@ -0,0 +1 @@
|
||||
# Closures
|
||||
@@ -0,0 +1 @@
|
||||
# Cobra
|
||||
@@ -0,0 +1 @@
|
||||
# Comma-Ok Idiom
|
||||
@@ -0,0 +1 @@
|
||||
# Commands & Docs
|
||||
@@ -0,0 +1 @@
|
||||
# Common Usecases
|
||||
@@ -0,0 +1 @@
|
||||
# Compiler & Linker Flags
|
||||
@@ -0,0 +1 @@
|
||||
# Complex Numbers
|
||||
@@ -0,0 +1 @@
|
||||
# Concurrency Patterns
|
||||
@@ -0,0 +1 @@
|
||||
# Conditionals
|
||||
@@ -0,0 +1 @@
|
||||
# const and iota
|
||||
@@ -0,0 +1 @@
|
||||
# `context` Package
|
||||
@@ -0,0 +1 @@
|
||||
# continue
|
||||
@@ -0,0 +1 @@
|
||||
# Coverage
|
||||
@@ -0,0 +1 @@
|
||||
# Cross-compilation
|
||||
@@ -0,0 +1 @@
|
||||
# Data Types
|
||||
@@ -0,0 +1 @@
|
||||
# Deadlines & Cancellations
|
||||
@@ -0,0 +1 @@
|
||||
# echo
|
||||
@@ -0,0 +1 @@
|
||||
# Embedding Interfaces
|
||||
@@ -0,0 +1 @@
|
||||
# Embedding Structs
|
||||
@@ -0,0 +1 @@
|
||||
# Empty Interfaces
|
||||
@@ -0,0 +1 @@
|
||||
# encoding/json
|
||||
@@ -0,0 +1 @@
|
||||
# Error Handling Basics
|
||||
@@ -0,0 +1 @@
|
||||
# `error` interface
|
||||
@@ -0,0 +1 @@
|
||||
# errors.New
|
||||
@@ -0,0 +1 @@
|
||||
# Escape Analysis
|
||||
@@ -0,0 +1 @@
|
||||
# fan-in
|
||||
@@ -0,0 +1 @@
|
||||
# fan-out
|
||||
@@ -0,0 +1 @@
|
||||
# fiber
|
||||
@@ -0,0 +1 @@
|
||||
# flag
|
||||
@@ -0,0 +1 @@
|
||||
# Floating Points
|
||||
@@ -0,0 +1 @@
|
||||
# fmt.Errorf
|
||||
@@ -0,0 +1 @@
|
||||
# for loop
|
||||
@@ -0,0 +1 @@
|
||||
# for range
|
||||
@@ -0,0 +1 @@
|
||||
# Functions Basics
|
||||
@@ -0,0 +1 @@
|
||||
# Functions
|
||||
@@ -0,0 +1 @@
|
||||
# Garbage Collection
|
||||
@@ -0,0 +1 @@
|
||||
# Generic Functions
|
||||
@@ -0,0 +1 @@
|
||||
# Generic Types / Interfaces
|
||||
@@ -0,0 +1 @@
|
||||
# Generics
|
||||
@@ -0,0 +1 @@
|
||||
# gin
|
||||
@@ -1,8 +0,0 @@
|
||||
# Buffer
|
||||
|
||||
The `buffer` belongs to the byte package of the Go language, and we can use these package to manipulate the byte of the string.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Buffer Examples](https://pkg.go.dev/bytes#example-Buffer)
|
||||
- [@article@Buffer](https://www.educba.com/golang-buffer/)
|
||||
@@ -1,14 +0,0 @@
|
||||
# Channels
|
||||
|
||||
Channels are the pipes that connect concurrent goroutines. You can send values into channels from one goroutine and receive those values into another goroutine.
|
||||
|
||||
Channels are a typed conduit through which you can send and receive values with the channel operator, `<-` .
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Channels](https://go.dev/tour/concurrency/2)
|
||||
- [@official@Effective Go: Channels](https://go.dev/doc/effective_go#channels)
|
||||
- [@article@Go by Example: Channels](https://gobyexample.com/channels)
|
||||
- [@article@Channels in Golang](https://golangbot.com/channels/)
|
||||
- [@video@Channels](https://www.youtube.com/watch?v=e4bu9g-bYtg)
|
||||
- [@video@Golang Channel Basics You must Know!](https://youtu.be/LgCmPHqAuf4)
|
||||
@@ -1,11 +0,0 @@
|
||||
# Context
|
||||
|
||||
The `context` package provides a standard way to solve the problem of managing the state during a request. The package satisfies the need for request-scoped data and provides a standardized way to handle: Deadlines, Cancellation Signals, etc.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Context](https://pkg.go.dev/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)
|
||||
- [@video@Context in Go](https://www.youtube.com/watch?v=LSzR0VEraWw)
|
||||
- [@video@Understanding Contexts in Go](https://youtu.be/h2RdcrMLQAo)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Go Generics
|
||||
|
||||
Go Generics is a feature that allows you to write functions, data structures, and algorithms that can work with any type. This is a powerful feature that can help you write more flexible and reusable code.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Generics](https://go.dev/doc/tutorial/generics)
|
||||
- [@official@Go Blog: Generics](https://go.dev/blog/intro-generics)
|
||||
- [@article@Go by Example: Generics](https://gobyexample.com/generics)
|
||||
- [@video@Generics Explained](https://www.youtube.com/watch?v=WpTKqnfp5dY)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Modules
|
||||
|
||||
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.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Modules](https://go.dev/blog/using-go-modules)
|
||||
- [@article@DigitalOcean: How to use Go Modules](https://www.digitalocean.com/community/tutorials/how-to-use-go-modules)
|
||||
- [@video@Go Modules](https://www.youtube.com/watch?v=9cV1KESTJRc)
|
||||
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)
|
||||
@@ -1,12 +0,0 @@
|
||||
# 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. In Go, each of these concurrent tasks are called `Goroutines`.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Goroutines](https://go.dev/tour/concurrency/1)
|
||||
- [@official@Effective Go: Goroutines](https://go.dev/doc/effective_go#goroutines)
|
||||
- [@video@GoRoutines](https://www.youtube.com/watch?v=LvgVSSpwND8)
|
||||
- [@video@Understanding Concurrency](https://www.youtube.com/watch?v=V-0ifUKCkBI)
|
||||
- [@article@Go by Example: Goroutines](https://gobyexample.com/goroutines)
|
||||
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)
|
||||
@@ -1,7 +0,0 @@
|
||||
# Go advanced
|
||||
|
||||
Diving deeper into Golang involves exploring the language's more advanced features and best practices to harness its full potential. Once you’ve mastered the basics, advancing your knowledge includes understanding complex aspects of Go that can significantly improve your code’s performance, readability, and maintainability.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@article@Mastering Advance GO](https://www.reddit.com/r/golang/comments/m57vwe/advanced_go_techniques_you_think_everyone_should/)
|
||||
@@ -1,11 +0,0 @@
|
||||
# Interfaces
|
||||
|
||||
An interface in Go, is a type that defines a set of methods. If we have a type (e.g. struct) that implements that set of methods, then we have a type that implements this interface.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Interfaces](https://go.dev/tour/methods/9)
|
||||
- [@official@Effective Go: Interfaces](https://go.dev/doc/effective_go#interfaces)
|
||||
- [@article@Go by Example: Interfaces](https://gobyexample.com/interfaces)
|
||||
- [@video@Golang Tutorial #22 - Interfaces (by Tech With Tim on YouTube)](https://www.youtube.com/watch?v=lh_Uv2imp14)
|
||||
- [@video@Understanding Go Interfaces](https://www.youtube.com/watch?v=qJKQZKGZgf0)
|
||||
@@ -1,8 +0,0 @@
|
||||
# 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. 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:
|
||||
|
||||
- [@article@Using a Mutex in Go with Examples](https://www.sohamkamani.com/golang/mutex/)
|
||||
- [@article@Sync Package](https://pkg.go.dev/sync/)
|
||||
@@ -1,9 +0,0 @@
|
||||
# Go Pointers
|
||||
|
||||
Go pointers are a powerful feature that allows you to work with memory addresses directly. They are used to store the memory address of a variable. This can be useful when you need to pass a large amount of data to a function or when you need to modify the value of a variable inside a function.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Pointers](https://go.dev/tour/moretypes/1)
|
||||
- [@article@Go by Example: Pointers](https://gobyexample.com/pointers)
|
||||
- [@video@YouTube: Pointers](https://www.youtube.com/watch?v=a4HcEsJ1hIE)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Go Scheduler
|
||||
|
||||
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.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@article@OS Scheduler - 1](https://www.ardanlabs.com/blog/2018/08/scheduling-in-go-part1.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)
|
||||
- [@video@Go scheduler: Implementing language with lightweight concurrency](https://www.youtube.com/watch?v=-K11rY57K7k&ab_channel=Hydra)
|
||||
@@ -1,11 +0,0 @@
|
||||
# Select
|
||||
|
||||
The `select` statement lets a goroutine wait on multiple communication operations.
|
||||
|
||||
A `select` blocks until one of its cases can run, then it executes that case. It chooses one at random if multiple are ready. The `select` statement is just like switch statement, but in the select statement, case statement refers to communication, i.e. sent or receive operation on the channel.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Select](https://go.dev/tour/concurrency/5)
|
||||
- [@article@Go by Example: Select](https://gobyexample.com/select)
|
||||
- [@video@Select Statement](https://www.youtube.com/watch?v=1c7ttSJDMAI)
|
||||
@@ -1,8 +0,0 @@
|
||||
# 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. Type assertions in Golang provide access to the exact type of variable of an interface.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Types Assertions](https://go.dev/tour/methods/15)
|
||||
- [@video@Go Syntax - Type Assertions](https://youtube.com/watch?v=vtGbi9bGr3s)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Working with json
|
||||
|
||||
JSON (JavaScript Object Notation) is a simple data interchange format. Syntactically it resembles the objects and lists of JavaScript. It is most commonly used for communication between web back-ends and JavaScript programs running in the browser, but it is used in many other places, too.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@JSON](https://go.dev/blog/json)
|
||||
- [@article@Guide to JSON in Golang](https://www.sohamkamani.com/golang/json/)
|
||||
- [@article@JSON to GO](https://mholt.github.io/json-to-go/)
|
||||
- [@article@Comprehensive Guide to using JSON in Go](https://betterstack.com/community/guides/scaling-go/json-in-go/)
|
||||
@@ -1,9 +0,0 @@
|
||||
# Gqlgen
|
||||
|
||||
According to their documentation, it's a Golang library for building GraphQL servers without much effort.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@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/)
|
||||
- [@video@GraphQL in Go - GQLGen Tutorial (by acklackl on YouTube)](https://www.youtube.com/watch?v=O6jYy421tGw)
|
||||
@@ -1,11 +0,0 @@
|
||||
# Graphql go
|
||||
|
||||
A `GraphQL` package for `Go`.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@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)
|
||||
- [@opensource@Graphql](https://github.com/graphql-go/graphql)
|
||||
- [@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)
|
||||
@@ -1,14 +0,0 @@
|
||||
# Graphql
|
||||
|
||||
`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`.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@roadmap@Visit Dedicated GraphQL Roadmap](https://roadmap.sh/graphql)
|
||||
- [@official@Learn GraphQL](https://graphql.org/learn/)
|
||||
- [@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@Digital Ocean: An Introduction to GraphQL](https://www.digitalocean.com/community/tutorials/an-introduction-to-graphql)
|
||||
- [@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)
|
||||
- [@feed@Explore top posts about GraphQL](https://app.daily.dev/tags/graphql?ref=roadmapsh)
|
||||
@@ -1,8 +0,0 @@
|
||||
# API Clients
|
||||
|
||||
An API client is a set of tools and protocols that operate from an application on a computer. They help you to bypass some operations when developing a web application rather than reinventing the wheel every time. Using a client API is a great way to speed up the development process.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@article@API Clients](https://rapidapi.com/blog/api-glossary/client/)
|
||||
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)
|
||||
@@ -1,14 +0,0 @@
|
||||
# Grequests
|
||||
|
||||
Golang implementation of Python Grequests library(one of well known HTTP Library in Python).
|
||||
|
||||
Features:
|
||||
|
||||
- Responses can be serialized into JSON and XML
|
||||
- Easy file uploads
|
||||
- Easy file downloads
|
||||
- Support for the following HTTP verbs GET, HEAD, POST, PUT, DELETE, PATCH, OPTIONS
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@opensource@Grequests](https://github.com/levigross/grequests)
|
||||
@@ -1,13 +0,0 @@
|
||||
# Heimdall
|
||||
|
||||
Heimdall is an HTTP client that helps your application make a large number of requests, at scale. With Heimdall, you can:
|
||||
|
||||
- Use a hystrix-like circuit breaker to control failing requests
|
||||
- Add synchronous in-memory retries to each request, with the option of setting your own retrier strategy
|
||||
- Create clients with different timeouts for every request
|
||||
|
||||
All HTTP methods are exposed as a fluent interface.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@opensource@Heimdall](https://github.com/gojek/heimdall)
|
||||
@@ -1,9 +0,0 @@
|
||||
# REST
|
||||
|
||||
REST (Representational State Transfer) API (Application Programming Interface) is used to deliver user functionality when dealing with websites. HTTP requests are used to communicate with REST APIs so users can navigate a URL website. These URLs can return certain information that is stored as part of the API.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Tutorial](https://go.dev/doc/tutorial/web-service-gin)
|
||||
- [@video@RESTful APIs Series](https://youtube.com/playlist?list=PLzUGFf4GhXBL4GHXVcMMvzgtO8-WEJIoY)
|
||||
- [@feed@Explore top posts about REST API](https://app.daily.dev/tags/rest-api?ref=roadmapsh)
|
||||
@@ -1,9 +0,0 @@
|
||||
# Arrays
|
||||
|
||||
In Go an `array` is a collection of elements of the same type with a **fixed** size defined when the array is created.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Arrays](https://go.dev/tour/moretypes/6)
|
||||
- [@official@Effective Go: Arrays](https://go.dev/doc/effective_go#arrays)
|
||||
- [@video@Learn Go Programming - Arrays](https://youtu.be/YS4e4q9oBaU?t=6473)
|
||||
@@ -1,8 +0,0 @@
|
||||
# Basic Syntax
|
||||
|
||||
Learn about the basic syntax of Go, such as how the Go programs are executed, package imports, main function, and so on.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Tutorial: Getting started](https://go.dev/doc/tutorial/getting-started)
|
||||
- [@article@Go by Example: Hello World](https://gobyexample.com/hello-world)
|
||||
@@ -1,14 +0,0 @@
|
||||
# Conditional Statements
|
||||
|
||||
Conditional statements are used to run code only if a certain condition is true. Go supports:
|
||||
|
||||
- `if` statements
|
||||
- `if...else` statements
|
||||
- `switch...case` statements
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Effective Go: `if` statement](https://go.dev/doc/effective_go#if)
|
||||
- [@article@Go by Example: If-Else](https://gobyexample.com/if-else)
|
||||
- [@article@Golang If-Else Statements](https://www.golangprograms.com/golang-if-else-statements.html)
|
||||
- [@article@Golang Switch Case Programs](https://www.golangprograms.com/golang-switch-case-statements.html)
|
||||
@@ -1,7 +0,0 @@
|
||||
# Data 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.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Tour of Go: types](https://go.dev/tour/basics/11)
|
||||
@@ -1,13 +0,0 @@
|
||||
# Errors/Panic/Recover
|
||||
|
||||
In lieu of adding exception handlers, the Go creators exploited Go’s ability to return multiple values. The most commonly used Go technique for issuing errors is to return the error as the last value in a return.
|
||||
|
||||
A panic typically means something went unexpectedly wrong. Mostly used to fail fast on errors that shouldn’t occur during normal operation, or that we aren’t prepared to handle gracefully.
|
||||
|
||||
Panic recovery in Go depends on a feature of the language called deferred functions. Go has the ability to guarantee the execution of a function at the moment its parent function returns. This happens regardless of whether the reason for the parent function’s return is a return statement, the end of the function block, or a panic.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Error handling and Go](https://go.dev/blog/error-handling-and-go)
|
||||
- [@official@Go Defer, Panic and Recover](https://go.dev/blog/defer-panic-and-recover)
|
||||
- [@article@Effective error handling in Go](https://earthly.dev/blog/golang-errors/)
|
||||
@@ -1,14 +0,0 @@
|
||||
# For Loop
|
||||
|
||||
Go has only one looping construct, the `for` loop. The basic `for` loop has three components separated by semicolons:
|
||||
|
||||
- the init statement: executed before the first iteration
|
||||
- the condition expression: evaluated before every iteration
|
||||
- the post statement: executed at the end of every iteration
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@For Loop in Golang](https://go.dev/tour/flowcontrol/1)
|
||||
- [@official@Effective Go: For loop](https://go.dev/doc/effective_go#for)
|
||||
- [@article@Go by Example: For loop](https://gobyexample.com/for)
|
||||
- [@article@5 Basic for Loop Patterns](https://yourbasic.org/golang/for-loop/)
|
||||
@@ -1,9 +0,0 @@
|
||||
# Functions
|
||||
|
||||
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.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@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,9 +0,0 @@
|
||||
# Learn the Basics
|
||||
|
||||
Learn the common concepts of Go like variables, loops, conditional statements, functions, data types, and so on. A good starting point for go basics is its Go's official docs.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Tutorial](https://go.dev/doc/tutorial/)
|
||||
- [@article@Learn X in Y minutes](https://learnxinyminutes.com/go/)
|
||||
- [@feed@Explore top posts about Golang](https://app.daily.dev/tags/golang?ref=roadmapsh)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Make
|
||||
|
||||
Golang's built-in function make, helps us create and initialize slices, maps and channels, depending on the arguments that are provided to the function.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Effective Go: Allocation with make](https://go.dev/doc/effective_go#allocation_make)
|
||||
- [@article@Create a slice with make](https://www.golangprograms.com/how-to-create-slice-using-make-function-in-golang.html)
|
||||
- [@article@Create a map with make](https://www.golangprograms.com/golang-package-examples/how-to-create-map-using-the-make-function-in-go.html)
|
||||
- [@article@Create a channel with make](https://www.programiz.com/golang/channel#channel)
|
||||
@@ -1,9 +0,0 @@
|
||||
# Maps
|
||||
|
||||
Maps are the data structure in Go, where we use whenever we want to have mappings between key:value pairs. They have flexibility in terms of removing or adding elements into them. Maps do not allow duplicate entries while data are kept unordered.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Maps](https://go.dev/tour/moretypes/19)
|
||||
- [@official@Effective Go: Maps](https://go.dev/doc/effective_go#maps)
|
||||
- [@video@Golang Tutorial #15 - Maps (by Tech With Tim on YouTube)](https://www.youtube.com/watch?v=yJE2RC37BF4)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Packages
|
||||
|
||||
Packages are the most powerful part of the Go language. The purpose of a package is to design and maintain a large number of programs by grouping related features together into single units so that they can be easy to maintain and understand and independent of the other package programs. This modularity allows them to share and reuse. In Go language, every package is defined with a different name and that name is close to their functionality like “strings” package and it contains methods and functions that only related to strings.
|
||||
|
||||
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)
|
||||
- [@official@How to Manage External Dependencies in Go](https://go.dev/doc/modules/managing-dependencies)
|
||||
@@ -1,9 +0,0 @@
|
||||
# Range
|
||||
|
||||
`range` is used with for loops to iterate over each element in arrays, strings and other data structures.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Ranges](https://go.dev/tour/moretypes/16)
|
||||
- [@article@Go by Example: Range](https://gobyexample.com/range)
|
||||
- [@article@Go ranges basic patterns](https://yourbasic.org/golang/for-loop-range-array-slice-map-channel/)
|
||||
@@ -1,9 +0,0 @@
|
||||
# Slices
|
||||
|
||||
Slices are similar to arrays but are more powerful and flexible. Like arrays, slices are also used to store multiple values of the same type in a single variable. However, unlike arrays, the length of a slice can grow and shrink as you see fit.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Slices](https://go.dev/tour/moretypes/7)
|
||||
- [@official@Effective Go: Slices](https://go.dev/doc/effective_go#slices)
|
||||
- [@video@Learn Go Programming - Slices](https://youtu.be/YS4e4q9oBaU?t=6473)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Structs
|
||||
|
||||
Structs are user-defined types that help us create a collection of data describing a single entity.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@official@Go Structs](https://go.dev/tour/moretypes/2)
|
||||
- [@article@Go by Example: Structs](https://gobyexample.com/structs)
|
||||
- [@video@Structs in Go](https://www.youtube.com/watch?v=NMTN543WVQY)
|
||||
- [@video@Struct tags and creating own tags through reflection](https://www.youtube.com/watch?v=vtHZb7gNlbw)
|
||||
@@ -1,8 +0,0 @@
|
||||
# Type Casting
|
||||
|
||||
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:
|
||||
|
||||
- [@official@Tour of Go: Type Casting Basics](https://go.dev/tour/basics/13)
|
||||
- [@article@Go Docs: Type Casting](https://golangdocs.com/type-casting-in-golang)
|
||||
@@ -1,8 +0,0 @@
|
||||
# Type Inference
|
||||
|
||||
Type inference gives go the capability to detect the type of a value without being explicitly indicated , hence the possibility to declare variables without providing its type at first
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@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)
|
||||
@@ -1,8 +0,0 @@
|
||||
# Variables in Go
|
||||
|
||||
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:
|
||||
|
||||
- [@official@Go Variables](https://go.dev/tour/basics/8)
|
||||
- [@article@Go by Example: Variables](https://gobyexample.com/variables)
|
||||
@@ -0,0 +1 @@
|
||||
# go build
|
||||
@@ -1,9 +0,0 @@
|
||||
# Bubbletea
|
||||
|
||||
Bubbletea is a powerful and flexible framework for building terminal user interfaces (TUIs) in Go, based on The Elm Architecture.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@opensource@Bubbletea](https://github.com/charmbracelet/bubbletea)
|
||||
- [@article@Bubbletea Tutorial](https://github.com/charmbracelet/bubbletea/tree/master/tutorials)
|
||||
- [@video@Building Terminal Wizard in Go](https://www.youtube.com/watch?v=Gl31diSVP8M)
|
||||
@@ -1,10 +0,0 @@
|
||||
# Cobra
|
||||
|
||||
Cobra is a library for creating powerful modern CLI applications.
|
||||
|
||||
Visit the following resources to learn more:
|
||||
|
||||
- [@opensource@Cobra Github](https://github.com/spf13/cobra)
|
||||
- [@official@Cobra Website](https://cobra.dev/)
|
||||
- [@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)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user