Installation
- System requirements
- Install the Go tools
- Uninstalling Go
- Getting help
- Links
Tools
- The toolchain
Hello, Go
- Why Go?
- Links
Variables & Data structures
- Variables
- Constants
- Elementary types
- Underlying data structures
- Important points
- array, slice, map
Control statements and Functions
- Control statements
- Functions
Struct
- Basics of Struct
- Links
Object-oriented
- Methods
- Custom data types
- Use pointer as receiver
- Inheritance of method
- Method overload
- Links
Interface
- What is an interface?
- Types of Interface
- Value of interface
- Empty interface
- Method arguments of an interface
- Type of variable in an interface
- Embedded interfaces
- Reflection
- Links
Concurrency
- goroutine
- channels
- Buffered channels
- Range and Close
- Select
- Timeout
- Runtime goroutine
- Links
Managing the Workspace
$GOPATHand$GOROOT- Packages
- Internal deployment
- Running a server
- MVC Pattern
- Links
Web Programming Basics
- HTTP Methods
- What is a template?
- Static Files
- Links
Basic web application
- Handling URLs
- Serving static files
- Homework
- Footnotes
- Links
Designing our web app
- The Design
- Homework
- Links
Using databases in Go
- Creating and configuring database
- Installing sqlite driver
- Accessing the database
- Importing driver
- Retrieving Result Sets
- Fetching Data from the Database
- How Scan() Works
- Preparing Queries
- Single-Row Queries
- Modifying Data and Using Transactions
- Statements that Modify Data
- Working with Transactions
- Using Prepared Statements
- Prepared Statements And Connections
- Avoiding Prepared Statements
- Prepared Statements in Transactions
- Parameter Placeholder Syntax
- Handling Errors
- Working with NULLs
- Working with Unknown Columns
- The connection pool
- Surprises, Antipatterns and Limitations
- Database Encapsulation
- Homework
- Links
An Example
- Homework
- Links
Working with Forms
- CSRF
- Javascript
- Forms in Go
- Input Validation
- Links
Uploading files
- Links
Templates
- template.Must
- Sub templating
- Looping through arrays
- Template variables
- Creating variables
- Homework
- Links
Authentication
- Cookies
- Sessions
- Users
- Links
Files
- Homework
- Links
Routing
- From the documentation
- Homework
- Links
Middlewares
- Example
- Links
Building an API
- JWT
- Making an API call
- Formatting a JSON document
- Testing API
Writing a client
- Getting the token
- Error handling
- Example
- Advanced Usage
- Homework
- Links
Unit Testing
- Validating the Status Code for edge cases
- Incremental testing
- Homework
- Links
Version Control Basics
- Using git
- Branching
- Remote
- Links