learning-go

command module
v0.0.0-...-ce681be Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 29, 2023 License: MIT Imports: 3 Imported by: 0

README

🎓 Learning Go

Learning Go

🍦 The Fundamentals

  • Variables are mutable by default - when a variable is declared with the var keyword, it is mutable, and can change during its own lifetime. This also applies to the variables declared with short variable declaration operator
  • Default size of types such as int and float are based on the architecture of the machine running the Go compiler - for example an int on a 64-bit machine, defaults to int64, or int32 on a 32-bit machine.
  • type <name> struct lets you construct a user-defined structure
  • Go is structured by modules and packages
  • Functions are by default package-private.
  • To export to make available externally, capitalize the first character of the function name
  • Unused variables produce a compile-time error - you may not declare and initialize a variable without later using the variable.

🍨 Concepts & Constructs

  • Zero value - when variables are declared, they are initialized to their respective zero value (string -> "", bool -> false). The use of keyword var gives you a variable initialized with a zero value. [1]
  • Short variable declaration operator - when you use := operator, Go infers the type being declared or throws a compilation error if it cannot infer the type.
  • Escape Analysis - part of static code analysis done by the compiler - determines if value belongs on the stack or on the heap. This is to ensure that integrity is maintained as a value is accessed during its lifetime.

🏗 Setting up a Go environment

Installing Go
Preparing the environment for local usage
mkdir ~/go

# For ZSH users
echo "GOPATH=/Users/$(whoami)/go" >> ~/.zprofile && zsh -l

Running examples

NOTE: On Windows, run the following with go run <dir> (sans *.go)

go run 01-variables-and-types/*.go
go run 02-conditionals/*.go
go run 03-loops/*.go
go run 04-functions/*.go
go run 05-errors/*.go
go run 06-user-defined-types/*.go
go run 07-concurrency/*.go
go run 08-interfaces/*.go
go test 09-testing/adder/*.go
go test 09-testing/poem/*.go
go run 10-builtin-libraries/*.go
go run 11-file-io/*.go

Linting, Formatting, Maintenance, and Curation

go mod tidy

go mod tidy ensures that the go.mod file matches the source code in the module. It adds any missing module requirements necessary to build the current module’s packages and dependencies, and it removes requirements on modules that don’t provide any relevant packages. It also adds any missing entries to go.sum and removes unnecessary entries.

go mod tidy
go fmt

To format a module according to Go Lang style, you can run go fmt [module] to do so.

e.g. go fmt 01_hello_world

Go Resources

Essentials for the real world. Wheels don't need to be reinvented.

CLI frameworks and tools
Testing frameworks and tools

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL