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