Đây là khoá học đào tạo lập trình viên Golang xây dựng REST API trong hệ thống.
Đồ án mẫu là xây dựng một
- Sinh viên cần sử dụng hệ điều hành Linux hoặc Mac để lập trình Golang
- Cần biết hoặc sẽ phải tự học Docker, Docker Compose, Docker Swarm
- Cài đặt Golang
- Sử dụng VSCode viết ứng dụng Golang đầu tiên
- In ra màn hình
- Tạo go module
- Khai báo biến: kiểu biến, gán, gán biến tự đoán kiểu
- Các kiểu căn bản. Ép kiểu
- Biến toàn cục vs cục bộ
- Khai báo hàm
- Hàm có nhiều tham số
- Hàm trả về nhiều giá trị, đặt tên biến trả về
- Hàm khác gì method
- Hàm variadic params
- Closure (anonymous function)
- Recursion
- Debug
- Tìm số nguyên tố
- Tính giai thừa
- In chuỗi fibonacci
- Public vs Private
- Module, tạo go module
- Con trỏ và lấy địa chỉ biến
- Composite Types: Array, Slice, Map, Struct
- Struct: khởi tạo, truyền vào hàm
- Array
- Slice và thao tác trên Slice
- Map và thao tác trên Map
- Phân tích dữ liệu trên file json
- Interfaces: khác biệt giữa Java và Golang
- Pointer Receiver vs Value Receiver
- Đọc file
- Các thao tác xử lý chuỗi: biến đổi, tìm kiếm, lấy một phần
- Đọc file đếm từ
- Mô phỏng
- Thao tác folder: thư mục hiện thời, di chuyển thư mục, tạo thư mục, xoá thư mục
- Thao tác file: tạo file, sửa tên file, copy file
- Quét file trong thư mục
Hãy sử dụng thư viện này https://github.com/xlab/treeprint và bài viết https://flaviocopes.com/go-list-files/ hãy in ra cấu trúc cây thư mục kiểu như sau:
.
├── config
│ └── config.go
├── controller
│ ├── ManufactureController.go
│ └── ProductController.go
- Go routine
- Go channel
- An Introduction to Testing in Go
- testify
- Improving Your Go Tests and Mocks With Testify
- gotests: gotests makes writing Go tests easy. It's a Golang commandline tool that generates table driven tests based on its target source files' function and method signatures. Any new dependencies in the test files are automatically imported.
- Benchmark Golang Code
- Go cron định thời chạy tác vụ
- Uber Zap logging
- Viber configuration cấu hình
- Cobra
- Pterm
Bài tập thực hành
- HTTP Verbs: GET, POST, PUT, DELETE
- Status Code
- Header vs Body
- Retry
- Resty Client: Simple HTTP and REST client library for Go (inspired by Ruby rest-client)
- An introduction to REST API testing in Go with Resty
- Application
- Application Context
- Router - Routing - Group
- Middle ware
- Custom middle ware
- Định nghĩa Model
- Quan hệ 1:nhiều, nhiều:nhiều
- Thêm sửa xoá truy vấn
- Transaction
- SOLID principle in GO
- SOLID Go Design
- SOLID : Interface Segregation Principle in Golang
- SOLID principles in Golang
- Design Patterns-Seven Design Principles for Golang
- Creational Patterns
- Structural Patterns
- Behavioral Patterns
https://github.com/ardanlabs/gotraining/tree/master/reading
Thread Safe Counting https://brunocalza.me/there-are-many-ways-to-safely-count/