Nine-stage learning path
From shallow to deep, stage by stage unlocking Go full-stack capabilities.
Go language fundamentals
From Go language origin, environment setup to basic syntax, building a complete first impression of Go development.
1.1Go language introduction+
1.1Origin of Go language+
1.2Founders of Go language+
1.3Go is a compiled language+
1.4Why learn Go language+
1.5Suitable scenarios for Go+
1.6Advantages summary+
1.7Go language mascot+
1.2Download & install Go+
2.1Terminology to learn during installation+
2.2Download+
2.3Installation+
1.3Practical: Install Golang+
1.4Practical: Configure Golang Environment+
1.5Go language structure & execution+
5.1Hello word+
5.2Source code analysis+
5.3Summary+
5.4Execute source code+
5.5Practical: Write code and output"Go Language Learning"+
5.6git installation+
5.7vscode+
1.6Go language coding conventions+
6.1line+
6.2Comments+
6.3Identifiers+
6.4String concatenation+
6.5Using spaces+
6.6No unused variables or package imports allowed+
1.7Go language data types+
7.1Boolean type bool+
7.2Number Types+
7.3String type string+
7.4Derived types+
1.8Variable declaration+
8.1Variable concept & naming conventions+
8.2Declare Variables+
8.3Variable assignment+
8.4Anonymous variable+
1.9Practical: Define Variables & Print+
1.10Go language constants+
10.1Single constant definition+
10.2Multiple constant definition+
10.3Enumeration+
Operators & flow control
Deep dive into arithmetic/relational/logical/assignment operators, mastering if, switch, for, and keyboard interaction programming.
2.1VSCode GOENV+
2.2Arithmetic operators+
2.1Supplement on float32 and float64+
2.2Addition & subtraction+
2.3Multiplication & division+
2.4Modulo+
2.5Increment & decrement+
2.6Practical: Do the Following Operations+
2.3Relational operators+
3.1Key points+
2.4Logical operators+
2.5Assignment operators+
2.6Operator precedence+
2.7Keyboard input+
7.1Using fmt.Scanln() to get input+
7.2Using fmt.Scanf() to get input+
2.8Branch control - if+
8.1Single branch+
8.2Double branch+
8.3Multiple branch+
8.4Nesting+
8.5Tip+
2.9Practical: Make a Program, Input Year, Check Leap Year+
2.10Branch control - switch+
10.1switchDefinition+
10.2Basic syntax+
10.3Execution flow+
2.11Practical: Input Birth Month & Date, Output Zodiac Sign+
2.12Loop control+
12.1for+
12.2break+
12.3goto+
2.13Practical: Simple Calculator+
2.14Practical: Input Integer, Check Prime+
Pointers & function programming
Understand pointer memory model, master function declaration, parameters, multiple return values, closures, and recursion.
3.1Go language pointers+
1.1How to access variable memory address+
1.2What is a pointer+
- 1.2.1Definition
- 1.2.2Pointer declaration format
- 1.2.3Example
1.3How to use pointers+
- 1.3.1Pointer usage process
- 1.3.2Example
1.4Go null pointer+
3.2Go function declaration & definition+
2.1Function definition format+
2.2Definition analysis+
2.3Example+
3.3Simple function usage+
3.1Example+
3.2Analysis+
3.4Function parameter supplement+
4.1Go also supports variable parameters+
4.2Pass by value+
4.3Pass by reference+
3.5Function return values detailed+
5.1Functions can define multiple return values+
- 5.1.1Note
- 5.1.2Example
5.2Function return values can have specific variable names+
- 5.2.1Description
- 5.2.2Instance
3.6Variable scope+
6.1Go language variables can be declared in three places+
6.2Local variables+
6.3Global variables+
6.4Formal parameters+
3.7Closure+
7.1Learning a new variable type: function variable+
- 7.1.1Definition
- 7.1.2Simplification
7.2Anonymous function+
- 7.2.1Definition
- 7.2.2Self-starting anonymous function
7.3Concept of closure+
- 7.3.1Concept
- 7.3.2Why use closures
- 7.3.3ExampleCode
- 7.3.4Analysis of example code
- 7.3.5Conclusion
7.4Practical: Write a Closure, Outer No Param, Inner Anonymous No Param+
7.5Write a closure,outer functionwith parameters, innerAnonymous functionno parameters+
7.6Practical: Write a Closure, Outer No Param, Inner Anonymous With Param+
7.7Practical: Write a Closure, Outer With Param, Inner Anonymous With Param+
3.8Recursion+
8.1Definition of recursion+
8.2For example+
8.3Practical: Calculate 1+2+3+...+n via Recursion+
3.9Practical: Use Closure to Implement Calculator with Continuous Addition+
Arrays, slices & maps
Master Go's three core composite data structures, understand value types vs reference types, and play with slices and maps.
4.1Go one-dimensional array+
1.1Definition+
1.2Declare array+
1.3Initialize array+
1.4Access & modify array elements+
1.5Practical: Print Array & Element Memory Addresses+
4.2Go multi-dimensional array+
2.1Definition+
2.2Two-dimensional array+
2.3Demo: 2D array declaration & initialization+
4.3Array Length & Traversal by Length+
3.1Array length+
3.2Traversal by length+
- 3.2.1Traverse 1D array
- 3.2.2Traverse 2D array
4.4Pass array to function+
4.5Array notes & usage details+
5.1Array is a combination of multiple same-type data+
5.2After array creation, if not assigned, defaults are as follows+
5.3Array subscript must be within specified range+
5.4Go's arrays are value types+
4.6Array pointer+
6.1Array pointer declaration & assignment+
6.2Create array via new method+
6.3Application+
6.4Note: array pointer and pointer array are different+
4.7Go slices+
7.1Let's explore array limitations first+
7.2Define slice+
7.3Learning make+
7.4Slice initialization+
7.5len() and cap() functions+
7.6Nil slice+
7.7Slice truncation+
7.8append() function+
7.9Can slices store data beyond capacity?+
- 7.9.1Practical: Add Elements Beyond Capacity to Defined Slice
- 7.9.2Conclusion
7.10copy() function+
4.8Go Map+
8.1Map definition+
- 8.1.1Define using basic syntax
- 8.1.2Using built-in make method
8.2Map usage+
8.3Delete a map element+
8.4Map usage, modify, add, delete examples+
4.9For Range+
9.1Traverse array/slice - get index & element+
9.2Traverse map - get keys and values+
4.10Practical: Use Array to Add Two Numbers+
4.11Practical: Bubble Sort Algorithm+
Package management, error handling & strings
Master package mechanism, defer/panic error handling, and the strings/strconv string processing toolkit.
5.1Go packages+
1.1Definition+
1.2Package import+
1.3Custom package example+
1.4Init function+
5.2Go error handling+
5.3defer+
5.4panic+
4.1Definition+
4.2Example+
4.3Recover+
4.4Recover example+
4.5Define a dedicated function+
5.5String+
5.1String essence+
5.2Define string+
5.3String properties+
5.4String concatenation+
- 5.4.1String Concatenation Operator "+"
- 5.4.2Can also use "+=" for string concatenation:
- 5.4.3Define multi-line string
5.5String length+
- 5.5.1String length can be obtained via len()
- 5.5.2RuneCountInString get
5.6String content access & traversal+
- 5.6.1Index access
- 5.6.2Using range to loop through string
5.6Learning strings package+
6.1String substring & search+
6.2String split+
6.3Case switching+
- 6.3.1Method list
- 6.3.2Example
6.4String delete+
- 6.4.1Method list
- 6.4.2Example
6.5Concatenation & repetition+
- 6.5.1Method list
- 6.5.2Usage example
6.6String replace+
- 6.6.1Method list
- 6.6.2Example
6.7String comparison+
- 6.7.1Method list
- 6.7.2Usage example
5.7strconv+
7.1ParseInt+
7.2Atoi Function+
7.3ParseUint Function+
7.4ParseFloat Function+
7.5Itoa Function+
Standard library advanced & engineering practical
regexp, time, math, rand standard libraries, completing number guessing, log analysis, open-source package publishing, and other practical exercises.
6.1Regexp package+
1.1Regex usage+
1.2Regexp package usage+
6.2Time package usage+
2.1Time types+
2.2Timestamps+
2.3Time duration+
2.4Time operations+
- 2.4.1Add
- 2.4.2Sub
- 2.4.3Equal
- 2.4.4Before
- 2.4.5After
- 2.4.6Time formatting
- 2.4.7Parse string-formatted time
6.3Math package usage+
3.1Constants+
3.2Common functions+
- 3.2.1IsNaN Function
- 3.2.2Ceil Function
- 3.2.3Floor Function
- 3.2.4Abs Function
- 3.2.5Max Function
- 3.2.6Min Function
- 3.2.7Mod Function
- 3.2.8Sqrt Function
- 3.2.9Pow Function
6.4Random numbers math/rand+
4.1Several methods implemented by rand+
4.2Simple usage+
4.3Reason why result remains unchanged+
4.4Instance+
6.5Practical: Number Guessing Game+
6.6Practical: Go log analysis & Excel generation+
6.1Log analysis+
6.2Learning Go Excel package excelize+
6.3Log to Excel generation+
6.4Learning go mod+
6.5Rewrite the above example+
- 6.5.1Structure
- 6.5.2main.go
6.6excel.go+
6.7Execute+
6.7Publish custom package to GitHub+
7.1Create a new public project on GitHub+
7.2Clone project to local+
7.3Initialize project with go mod+
7.4Write a program+
7.5Write README.md+
7.6Push to GitHub+
7.7Convert GitHub project to downloadable dependency package+
- 7.7.1Create a tag locally using git command
- 7.7.2Push tag to GitHub
- 7.7.3Check tag submission on GitHub directly
Object-oriented programming
Use structs, methods, interfaces, and inheritance to implement OOP in Go, completing the campus card comprehensive project.
7.1OOP concept overview+
7.2Go language OOP+
7.3OOP struct+
3.1Define struct+
- 3.1.1What is a struct
- 3.1.2How to define a struct
3.2Instantiate struct+
- 3.2.1Direct Assignment
- 3.2.2Declare First, Then Assign
- 3.2.3Anonymous struct
3.3Struct pointer & syntactic sugar+
3.4Struct as function parameter+
- 3.4.1Pass struct directly
- 3.4.2Pass struct pointer
3.5Struct as function parameter+
- 3.5.1Return struct directly
- 3.5.2Return struct pointer
3.6Go constructor implementation+
3.7Struct nesting+
- 3.7.1Definition
- 3.7.2Example
3.8Struct anonymous field & nesting methods+
- 3.8.1Anonymous struct field
- 3.8.2vSummary
- 3.8.3Struct nested anonymous custom type
- 3.8.4Struct nested anonymous built-in type
- 3.8.5Struct nested anonymous pointer of any type
7.4Struct methods+
4.1Go Functions & Methods+
4.2Define method+
- 4.2.1Description
- 4.2.2Method definition syntax format
- 4.2.3Example
4.3Pointer receiver+
7.5Access permissions+
7.6Interfaces+
6.1Define a Go interface+
6.2Implement polymorphism via interface+
7.7Inheritance+
7.8Practical: Campus Card+
Concurrent programming & network development
goroutine, channel, and MPG model, solving concurrency safety, mastering Socket and HTTP network programming.
8.1What is concurrency+
1.1Consider several scenarios+
1.2Benefits of concurrency+
1.3Concurrency implementation schemes+
- 1.3.1Multi-Process
- 1.3.2Multi-Thread
- 1.3.3Callback-based non-blocking/async IO
- 1.3.4Coroutine
8.2Coroutine concept analysis+
2.1Understanding processes & threads+
- 2.1.1Concept
- 2.1.2Difference
2.2Coroutine+
8.3Go's coroutine solution - goroutine+
3.1goroutine+
3.2MPG model+
3.3When blocking+
3.4runqueue execution complete+
3.5Simple process+
8.4Simple Go coroutine writing+
4.1Example+
4.2Question+
8.5Coroutine communication tool - channel+
5.1(Unnamed section)+
- 5.1.1Concept
- 5.1.2Example
5.2Channel syntax+
5.3select+
5.4Practical - Solve Timeout Problem+
5.5Buffering mechanism+
5.6Close channel+
8.6Practical: Primes Within 10000+
8.7Concurrency safety solution+
7.1Example+
7.2Solution+
- 7.2.1Mutex
- 7.2.2Read-write lock
8.8Network+
8.1socket+
- 8.1.1Diagram
- 8.1.2Server
- 8.1.3Client
8.2HTTP request+
- 8.2.1Server example
8.9Practical: Build a Prime Number Checker Website+
Gin framework & full-stack project practical
Build a server management platform from scratch based on Gin+SQLite+SSH/SFTP, unlocking full-stack development capabilities.
9.1Gin framework+
1.1go mod environment setup+
- 1.1.1Check Golang version
- 1.1.2Enable Golang module mode
- 1.1.3Set go mod proxy for faster download
- 1.1.4Create a new project
1.2Create a new main.go file+
1.3Run+
9.2Configure SQLite+
2.1Introduction+
2.2Download+
2.3Configuration+
2.4Create database+
9.3Server management platform planning+
3.1Function planning+
3.2Technical planning+
3.3Architecture design+
9.4Database initialization+
4.1Create models directory+
4.2Write the following code+
9.5helper+
5.1Create directories & files+
5.2common+
5.3log+
9.6Create model for admin_user table+
6.1Create file user.go+
- 6.1.1We need to create a struct
- 6.1.2We need to write these functions for User struct

