Links to: Go Playground
00 | Syntax demo | Description | ||
---|---|---|---|---|
hello world | How to print a message | |||
variables | How to declare variables | |||
constants | How to declare constants | |||
01 | Control flow | |||
for loop | Repetitive block statement | |||
switch | Multi-path value selector statement | |||
conditional | Conditional branching, if statement | |||
02 | Functions | |||
functions | How to create a function in GoLang | |||
return | How to define and capture multiple results | |||
varargs | How to define variadic function | |||
closure | How to use high order functions | |||
recursion | How to create a recursive function | |||
pointers | How to define and use pointers in functions | |||
03 | Collections | |||
array | How to define arrays | |||
slices | How to define slices | |||
maps | How to define a hash map | |||
range | How to traverse a collection using range | |||
strings | How to create strings & runes | |||
sorting | Using built-in .sort() method | |||
custom sort | Using a callback function to sort() | |||
04 | Objects | |||
struct | How to declare a data structure | |||
methods | How to define bounded functions | |||
interfaces | How to define interfaces | |||
embedding | How to define a nested struct | |||
generics | How to define generic struct | |||
05 | Error Handling | |||
errors | Define custom error using: errors.New() | |||
panic | How to create an exception | |||
defer | How to postpone execution of a statement | |||
recover | How to handle errors and avoid crash | |||
06 | Data processing | |||
string functions | String processing functions | |||
formating | String "fmt" package and format technique | |||
templates | Text template and format technique | |||
regex | How to use regular expressions | |||
JSON | How to parse JSON data | |||
XML | How to work with XML format | |||
05 | Concurrency | |||
goroutines | Learn how to use "go" to start a concurent function | |||
channels | Learn how to declare channels | |||
buffers | How to create a buffered channel | |||
synchronization | How to synchronize go routines using channels | |||
direction | How to define uni-directional channels | |||
select | How to handle multiple channels | |||
timeouts | Learn how to stop waiting for a go routine | |||
non-blocking | How to create non-blocking channels | |||
closing | How to close a channel and synchronize | |||
range & channel | How to creat a range over channel | |||
timers | How to create a timer: time.newTimer() | |||
tikers | How to create a ticker: time.NewTicker() | |||
worker pool | How to use worker pool with goroutine. | |||
wait group | https://gobyexample.com/waitgroups | |||
rate limiting | How to control resource utilization | |||
atomic counters | Using sync/atomic alternative to channels | |||
mutex | Use "mutex" as alternative to channels | |||
stateful goroutines | How to manage state using channels | |||
07 | Working with files | |||
reading | How to read files | |||
writing | How to write files | |||
filter | How to create "line filter" app | |||
path | How to work with path/filepath package | |||
folder | How to create/remove a folders | |||
temporary | How to work with temporary files | |||
embeded | How to work with embeded files | |||
ReadDir() | How to list files using ioutil package | |||
Walk() | How to list files using filepath package | |||
ReadDir() | How to list files using file.ReadDir function |
Homework: Take the Quiz