Golang Topics
Xuân Đỉnh Nguyễnにより
1. course outline: https://docs.google.com/document/d/1edBItjrz_fVlR7MVa33Q4lkkURVnS2oo8CKkwVf33b0
2. Web By Golang
2.1. Frameworks
3. Docker and Docker Compose
3.1. Introduction
3.2. Usage
4. Introduction
4.1. Go is a procedural programming language
4.1.1. Developed in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson at Google
4.1.2. Launched in 2009 as an open-source programming language
4.2. Go is compiled Language
4.2.1. Compiled Language vs Interpreted Language
4.2.1.1. Compiled Lang: C/C++, Java, C#, Pascal...
4.2.1.2. Interpreted Lang: Javascript, Perl, Python, PHP, Ruby...
5. Install and setup
5.1. Installing Go, Git, and VSCode on Windows, Mac, and Linux
5.2. Compiling and Running Go Programs
5.3. Using Go tools like go fmt to format and write idiomatic Go code
5.4. GOPATH and Go Application Structure
5.5. Go Packages and Modules In Depth
5.6. Publish Modules on GitHub
5.6.1. Refer Publishing a module - The Go Programming Language
6. Basic
6.1. Declarations, Variables, Constants, and Comments
6.2. Constant Rules, Typed vs. Untyped Constans, IOTA
6.3. Math, Comparison and Logical Operators
6.4. Data Types in Depth, Zero Values, Dynamically vs. Statically Typed Languages
6.5. Converting Types
6.6. fmt Package: Println, Printf, Sprintf, etc
6.7. Named (Defined) Types in Go
6.8. Alias Declarations
6.9. Flow Control: if, simple if statement, for, continue, break, switch, labels, goto
6.10. Scopes in Go
6.11. Strings, Runes, Bytes, and UTF-8 in Go
6.12. Arrays in Go
6.13. Slices
6.14. Maps
6.15. Structs
6.16. User-defined Functions, Variadic and Anonymous Functions, Defer Statement
6.17. Working with Files in Go: os, io, ioutil, bufio packages
6.18. Error Handling
6.19. Pointers In-Depth: Dereferencing and Address of Operators, Passing to Functions and Methods, etc
6.20. Methods (Function Receivers) and Interfaces (Go OOP): Embedded Interfaces, Empty Interface, Type Assertions, and Type Switches, etc
6.21. *** Object-Oriented programming in Golang
7. Advanced
7.1. Concurrency in Go
7.2. Goroutine Synchronization Using WaitGroups
7.3. Data Races, Go Race Detector, and Mutexes
7.4. Goroutines and Channels
7.5. Buffered and Unbuffered Channels
7.6. Channel Select Statement