Free Online Course · Self-paced

Golang Tutorial for Beginners (Hands-On)

Free, complete Go (Golang) tutorial - install, syntax, types, control flow, structs, interfaces, generics, goroutines, channels, web servers, gRPC, databases, testing, and benchmarking. 100+ runnable lessons on Go 1.21+.

  • 251 parts
  • ~1719 min total
  • Beginner to Advanced
  • Updated May 2026
Golang Tutorial for Beginners (Hands-On)
By Last updated

Go is the language that powers most modern cloud infrastructure - Docker, Kubernetes, Prometheus, Terraform, and most cloud-native control planes are written in it. This tutorial takes you from go install all the way to building production microservices, with examples tested on Go 1.21+.

We start with installation and modules, then walk through every fundamental (variables, types, control flow, functions), the type system (structs, methods, interfaces, generics), the famous concurrency model (goroutines, channels, contexts, mutexes), error handling, file I/O, JSON/YAML, networking, web frameworks (Gin, Fiber, Chi, Gorilla Mux), database integration (Postgres, MongoDB, Redis, DynamoDB), testing, benchmarking, fuzzing, cryptography, observability, and real-world architecture patterns. Every chapter is short and every snippet runnable.

Click Start the course to begin with installation, or jump to the chapter you need - Concurrency, Structs and Interfaces, and Networking, HTTP and Web Frameworks are the most-bookmarked. After this course, the natural next step is /kubernetes-operator-tutorial/ (writing operators in Go).

What you'll learn

  • Install Go, manage GOPATH/modules, and write your first program
  • Master syntax - variables, types, control flow, error returns, the comma-ok idiom
  • Build structs, methods, interfaces (and the famous "accept interfaces, return structs" pattern)
  • Use slices, maps, channels, and goroutines for concurrent, idiomatic Go
  • Build HTTP / gRPC / WebSocket servers and integrate with Postgres, Redis, MongoDB
  • Profile, benchmark, fuzz, and test Go code the right way

Prerequisites

  • Go 1.21+ installed
  • Comfortable on the command line
  • Familiarity with at least one other programming language

Syllabus

19 chapters · 251 lessons · ~1719 min of reading

  1. 1 Install and Set Up 9 lessons
    1. Part 1 Install Go 1.21+ on Ubuntu 6 min read
    2. Part 2 Install Go on Windows 4 min read
    3. Part 3 Uninstall Go 10 min read
    4. Part 4 Upgrade your Go version 5 min read
    5. Part 5 Best IDE for Go 7 min read
    6. Part 6 Getting started with Go 12 min read
    7. Part 7 Hello World in Go 3 min read
    8. Part 8 GOPATH vs GOROOT 5 min read
    9. Part 9 Set the GOPATH variable 5 min read
  2. 2 Modules and Packages 13 lessons
    1. Part 10 Create a custom Go module 9 min read
    2. Part 11 Package layout and conventions 8 min read
    3. Part 12 Call a function from another package 5 min read
    4. Part 13 Import a local package 4 min read
    5. Part 14 Import a local package without GOPATH 4 min read
    6. Part 15 Import a struct from another file 6 min read
    7. Part 16 Import private repositories 4 min read
    8. Part 17 go get a specific version 4 min read
    9. Part 18 Remove an installed package 7 min read
    10. Part 19 List installed packages 4 min read
    11. Part 20 Underscore (_) in front of imports 3 min read
    12. Part 21 Fix: cannot find package even if GOPATH is set 4 min read
    13. Part 22 Fix: go.mod file not found 7 min read
  3. 3 Variables, Constants, Types 14 lessons
    1. Part 23 Global variables 7 min read
    2. Part 24 Variable scope 8 min read
    3. Part 25 Variable naming conventions 12 min read
    4. Part 26 Fix: declared and not used 3 min read
    5. Part 27 Integer types (int, int32, int64, uint) 8 min read
    6. Part 28 Convert int to int64 3 min read
    7. Part 29 Convert byte to int 4 min read
    8. Part 30 Convert float64 to int 3 min read
    9. Part 31 Type casting Coming soon
    10. Part 31 Convert bool to string 3 min read
    11. Part 32 Cast to string 6 min read
    12. Part 33 Array constants 3 min read
    13. Part 34 Declare constant maps 4 min read
    14. Part 35 What does & (ampersand) mean in Go? 4 min read
  4. 4 Strings 18 lessons
    1. Part 36 String.Contains() 14 min read
    2. Part 37 Compare strings 5 min read
    3. Part 38 Split a string 5 min read
    4. Part 39 Split and assign to variables 3 min read
    5. Part 40 String interpolation 7 min read
    6. Part 41 Multi-line strings 4 min read
    7. Part 42 Trim whitespace 6 min read
    8. Part 43 Trim leading and trailing spaces 3 min read
    9. Part 44 Padding and formatting 5 min read
    10. Part 45 Escape backslash in strings 2 min read
    11. Part 46 Remove backslash from string 3 min read
    12. Part 47 Tab characters in strings 5 min read
    13. Part 48 Convert string to uint8 6 min read
    14. Part 49 Convert bytes to string 10 min read
    15. Part 50 Test if a string is empty 6 min read
    16. Part 51 Base64 encode/decode 12 min read
    17. Part 52 strconv package 8 min read
    18. Part 53 URL encode/decode 6 min read
  5. 5 Control Flow 8 lessons
    1. Part 54 if / else 6 min read
    2. Part 55 Ternary equivalents in Go 7 min read
    3. Part 56 switch statement 12 min read
    4. Part 57 for loop (the only loop) 9 min read
    5. Part 58 while-loop pattern 11 min read
    6. Part 59 break and continue 7 min read
    7. Part 60 Iterate over an array 4 min read
    8. Part 61 Iterate over a slice in reverse 3 min read
  6. 6 Functions 17 lessons
    1. Part 62 Functions in Go 14 min read
    2. Part 63 Function parameters 5 min read
    3. Part 64 Default parameter values 3 min read
    4. Part 65 Optional parameters 6 min read
    5. Part 66 Variadic functions 9 min read
    6. Part 67 Functions as parameters 3 min read
    7. Part 68 Functions that accept multiple types 4 min read
    8. Part 69 Methods vs functions 7 min read
    9. Part 70 Function vs method 6 min read
    10. Part 71 Closures 5 min read
    11. Part 72 Anonymous functions 6 min read
    12. Part 73 Return multiple values 7 min read
    13. Part 74 defer keyword 7 min read
    14. Part 75 Pass by reference vs value 5 min read
    15. Part 76 Go pointers tutorial 11 min read
    16. Part 77 init() function 6 min read
    17. Part 78 init() execution order 5 min read
  7. 7 Arrays, Slices and Maps 22 lessons
    1. Part 79 Arrays and structs overview 15 min read
    2. Part 80 Pass an array to a function 4 min read
    3. Part 81 Pass a slice to a function 4 min read
    4. Part 82 Append to a slice 4 min read
    5. Part 83 Append and return a slice 4 min read
    6. Part 84 Concatenate slices uniquely 5 min read
    7. Part 85 Remove from a slice 3 min read
    8. Part 86 Delete elements from a slice 7 min read
    9. Part 87 Remove duplicates from a slice 5 min read
    10. Part 88 Search for an element in a slice 6 min read
    11. Part 89 Check if an array contains a value 5 min read
    12. Part 90 Merge slices 4 min read
    13. Part 91 Sort a slice 5 min read
    14. Part 92 How to sort in Go 10 min read
    15. Part 93 Sort an array of ints 4 min read
    16. Part 94 Sort ints in reverse 3 min read
    17. Part 95 Maps in Go 9 min read
    18. Part 96 Check if a key exists in a map 12 min read
    19. Part 97 Length of a map 2 min read
    20. Part 98 Delete from a map 3 min read
    21. Part 99 Copy a map 14 min read
    22. Part 100 Convert a slice into a map 6 min read
  8. 8 Structs and Interfaces 20 lessons
    1. Part 101 Structs in Go 7 min read
    2. Part 102 Anonymous structs 13 min read
    3. Part 103 Constants in structs 3 min read
    4. Part 104 Print a struct 4 min read
    5. Part 105 Copy a struct 5 min read
    6. Part 106 Check if a struct is empty 4 min read
    7. Part 107 Set default values in structs 3 min read
    8. Part 108 Remove fields from a struct 5 min read
    9. Part 109 Store values in a struct in a loop 3 min read
    10. Part 110 Methods on a type 5 min read
    11. Part 111 Constructor pattern 6 min read
    12. Part 112 Interfaces 8 min read
    13. Part 113 Convert interface to string 16 min read
    14. Part 114 Type assertion 5 min read
    15. Part 115 Struct embedding 7 min read
    16. Part 116 Generics (Go 1.18+) 7 min read
    17. Part 117 Enum pattern in Go 17 min read
    18. Part 118 Tuple-like patterns 4 min read
    19. Part 119 reflect package 7 min read
    20. Part 120 Print the type of a value 4 min read
  9. 9 Concurrency - Goroutines, Channels, Sync 14 lessons
    1. Part 121 Goroutines explained 10 min read
    2. Part 122 Return a value from a goroutine 4 min read
    3. Part 123 Goroutines vs OS threads 7 min read
    4. Part 124 Channels in Go 12 min read
    5. Part 125 Channel basics 13 min read
    6. Part 126 Buffered channels 9 min read
    7. Part 127 Channels with multiple receivers 6 min read
    8. Part 128 Check if a channel buffer is full 5 min read
    9. Part 129 Stop a goroutine cleanly 4 min read
    10. Part 130 Mutex 9 min read
    11. Part 131 WaitGroup 12 min read
    12. Part 132 Concurrency patterns overview 12 min read
    13. Part 133 Fan-out / fan-in pattern 7 min read
    14. Part 134 context package 9 min read
  10. 10 Error Handling 6 lessons
    1. Part 135 Return an error 5 min read
    2. Part 136 Create a new error 4 min read
    3. Part 137 The comma-ok idiom 6 min read
    4. Part 138 panic and recover 8 min read
    5. Part 139 defer and os.Exit gotcha 5 min read
    6. Part 140 Detect nil 6 min read
  11. 11 File I/O and OS 26 lessons
    1. Part 141 os package overview 6 min read
    2. Part 142 Read environment variables 10 min read
    3. Part 143 Set environment variables 5 min read
    4. Part 144 Read a file - all methods 7 min read
    5. Part 145 Read a file into a variable 7 min read
    6. Part 146 Append to a file 7 min read
    7. Part 147 Read and update the same file 5 min read
    8. Part 148 Seek in a file 4 min read
    9. Part 149 Read a file with a timeout 9 min read
    10. Part 150 Copy a file (preserve permissions) 5 min read
    11. Part 151 os.Stat() examples 3 min read
    12. Part 152 Create nested directories 5 min read
    13. Part 153 Get the current directory 4 min read
    14. Part 154 Watch a directory (fsnotify) 9 min read
    15. Part 155 Execute shell commands 8 min read
    16. Part 156 Read command-line arguments 3 min read
    17. Part 157 flag package examples 7 min read
    18. Part 158 Parse multiple inputs 5 min read
    19. Part 159 Hide password input 6 min read
    20. Part 160 Build a CLI prompt 5 min read
    21. Part 161 Interactive CLI with go-prompt 5 min read
    22. Part 162 Build CLIs with Cobra 8 min read
    23. Part 163 Configuration with Viper 15 min read
    24. Part 164 Kill a process 5 min read
    25. Part 165 Monitor a background process 5 min read
    26. Part 166 Capture Ctrl+C signals 4 min read
  12. 12 JSON, YAML and Time 17 lessons
    1. Part 167 Read JSON data 8 min read
    2. Part 168 Parse JSON 7 min read
    3. Part 169 json.Unmarshal() 5 min read
    4. Part 170 omitempty in JSON tags 9 min read
    5. Part 171 Convert a map to JSON 3 min read
    6. Part 172 Convert a map to a struct 4 min read
    7. Part 173 Parse a YAML file 9 min read
    8. Part 174 time package basics 13 min read
    9. Part 175 Format time 4 min read
    10. Part 176 Timing code 4 min read
    11. Part 177 Get current time in milliseconds 4 min read
    12. Part 178 Multiply a duration by an integer 3 min read
    13. Part 179 Subtract a duration from a time 4 min read
    14. Part 180 Zero value for time.Time 3 min read
    15. Part 181 time.Ticker 7 min read
    16. Part 182 Ticker loop pattern 3 min read
    17. Part 183 Run repetitive tasks at intervals 5 min read
  13. 13 Networking, HTTP and Web Frameworks 21 lessons
    1. Part 184 Build a Go web server 14 min read
    2. Part 185 net/http package 12 min read
    3. Part 186 HTTP client with timeout 5 min read
    4. Part 187 POST a JSON request 4 min read
    5. Part 188 Set HTTP cookies 3 min read
    6. Part 189 HTTPS request with a bad certificate 4 min read
    7. Part 190 Pass multiple strings into a URL 4 min read
    8. Part 191 Get the IP address 4 min read
    9. Part 192 TCP server and client 5 min read
    10. Part 193 UDP server and client 5 min read
    11. Part 194 WebSocket server 10 min read
    12. Part 195 Port ping utility 8 min read
    13. Part 196 Pick a Go web framework 8 min read
    14. Part 197 Build APIs with Gin 11 min read
    15. Part 198 Build APIs with Fiber 12 min read
    16. Part 199 Build APIs with Chi 17 min read
    17. Part 200 Build APIs with Gorilla Mux 13 min read
    18. Part 201 GraphQL in Go 7 min read
    19. Part 202 gRPC in Go 13 min read
    20. Part 203 JWT authentication 10 min read
    21. Part 204 JWT examples 14 min read
  14. 14 Databases and Storage 11 lessons
    1. Part 205 database/sql package 10 min read
    2. Part 206 SQLite3 in Go 9 min read
    3. Part 207 CRUD REST API with Postgres 10 min read
    4. Part 208 gRPC CRUD API with Postgres 15 min read
    5. Part 209 Get started with Redis in Go 9 min read
    6. Part 210 CRUD REST API with Redis 10 min read
    7. Part 211 MongoDB in Go 10 min read
    8. Part 212 In-memory DB with memdb 8 min read
    9. Part 213 FlashDB in Go 6 min read
    10. Part 214 AWS DynamoDB in Go 11 min read
    11. Part 215 Connection pool patterns 7 min read
  15. 15 Concurrency, Performance, Testing 7 lessons
    1. Part 216 Write tests in Go 8 min read
    2. Part 217 Benchmark Go code 9 min read
    3. Part 218 Fuzz testing in Go 8 min read
    4. Part 219 Performance tuning in Go 5 min read
    5. Part 220 Garbage collector explained 13 min read
    6. Part 221 golangci-lint 8 min read
    7. Part 222 Set CPU affinity 5 min read
  16. 16 Cryptography and Security 5 lessons
    1. Part 223 Encrypt and decrypt data 7 min read
    2. Part 224 SHA-256 hashing 3 min read
    3. Part 225 SHA-512 hashing 3 min read
    4. Part 226 Generate random strings 7 min read
    5. Part 227 Generate random booleans 4 min read
  17. 17 Logging and Observability 5 lessons
    1. Part 228 Log to a file 5 min read
    2. Part 229 logrus structured logging 11 min read
    3. Part 230 zap structured logging 18 min read
    4. Part 231 Change the default log format 11 min read
    5. Part 232 Print function name and line number in logrus 6 min read
  18. 18 Real-World Projects and Architecture 10 lessons
    1. Part 233 Hexagonal (ports & adapters) architecture in Go Coming soon
    2. Part 233 Build a Go microservice with Docker 12 min read
    3. Part 234 Docker multi-stage build for Go 9 min read
    4. Part 235 Deploy Go to AWS Lambda 11 min read
    5. Part 236 cgo tutorial 9 min read
    6. Part 237 Create a PAM module in Go 18 min read
    7. Part 238 GUI apps with Shiny 14 min read
    8. Part 239 FIFO queue implementation 7 min read
    9. Part 240 Queue implementation 4 min read
    10. Part 241 sed/awk equivalents in Go 4 min read
  19. 19 Math and Misc 10 lessons
    1. Part 242 math package overview 6 min read
    2. Part 243 math.Pow() 4 min read
    3. Part 244 regexp package 7 min read
    4. Part 245 io.Reader to string 4 min read
    5. Part 246 Convert []byte to io.Reader 3 min read
    6. Part 247 io.ReadCloser 4 min read
    7. Part 248 HTML body to string 4 min read
    8. Part 249 The Go gopher mascot story 14 min read
    9. Part 250 Go vs Rust 6 min read
    10. Part 251 Go interview questions 11 min read
Deepak Prasad

R&D Engineer

Founder of GoLinuxCloud with over a decade of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels across development, DevOps, …

  • Red Hat Certified System Administrator in Red Hat OpenStack
  • Certified Kubernetes Application Developer (CKAD)
  • Red Hat Certified Specialist in Ansible Automation
  • Go (programming language)
  • Python (programming language)
  • DevOps
  • Computer Security