Go/Quick Start
< Go
Jump to navigation
Jump to search
Create a module
Create module and source file.
go mod init sandbox/hello
touch hello.go
Add source code.
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
Run.
go run .
Work with 2 modules
mkdir main greetings sucks
cd greetings
go mod init sandbox/greetings
cd ../sucks
go mod init sandbox/sucks
cd ../main
go mod init
go mod edit -replace sandbox/greetings=../greetings
go mod edit -replace sandbox/sucks=../sucks
go mod tidy
naming convention table
| Element | Visibility | Casing Rule | Example | Notes |
|---|---|---|---|---|
| Package | N/A | Lowercase | package utils | Packages are namespaces. They must be concise and descriptive. |
| Module | N/A | kebab-case (Lowercase with hyphens) | github.com/user/my-project | Used for import paths and module names. Kebab-case is standard for URLs. |
| Struct / Type | Exported (Public) | PascalCase | type User struct | Used to define public data structures. |
| Struct Field | Exported (Public) | PascalCase | Name string | Fields starting with a capital letter are visible outside the package. |
| Struct Field | Unexported (Private) | camelCase | age int | Fields starting with a lowercase letter are only visible within the package. |
| Function | Exported (Public) | PascalCase | func GetUser() User | Functions starting with a capital letter are public. |
| Function | Unexported (Private) | camelCase | func internalHelper() | Functions starting with a lowercase letter are private to the package. |
| Variable | Exported (Public) | PascalCase | var MaxUsers int | Variables starting with a capital letter are public. |
| Variable | Unexported (Private) | camelCase | var count int | Variables starting with a lowercase letter are private to the package. |
| Constant | Exported (Public) | ALL_CAPS | const MaxUsers = 100 | Used for fixed, immutable values. |
| Interface | Exported (Public) | PascalCase | type Reader interface | Interfaces are typically named to describe the action they perform (e.g., Reader, Writer). |
| Method | Exported/Unexported | Follow Function Rules | func (u *User) GetName() string | Methods follow the same visibility rules as functions. |