User Tools

Site Tools


golangbot_tutorial

Overview

Notes on Golangbot Golang tutorial series.

The primary focus of Golang is to make the development of highly available and scalable web apps simple and easy.

Misc

  • Concurrency
  • Compiled
  • Static linking
  • Linux based IDEs?
  • Debuggers?
  • Code analyzers?

Introduction

Introduction and Installation

Hello World

$ go help
Go is a tool for managing Go source code.

Usage:

	go command [arguments]

The commands are:

	build       compile packages and dependencies
	clean       remove object files and cached files
	doc         show documentation for package or symbol
	env         print Go environment information
	bug         start a bug report
	fix         update packages to use new APIs
	fmt         gofmt (reformat) package sources
	generate    generate Go files by processing source
	get         download and install packages and dependencies
	install     compile and install packages and dependencies
	list        list packages
	run         compile and run Go program
	test        test packages
	tool        run specified go tool
	version     print Go version
	vet         report likely mistakes in packages

Use "go help [command]" for more information about a command.

Additional help topics:

	c           calling between Go and C
	buildmode   build modes
	cache       build and test caching
	filetype    file types
	gopath      GOPATH environment variable
	environment environment variables
	importpath  import path syntax
	packages    package lists
	testflag    testing flags
	testfunc    testing functions

Use "go help [topic]" for more information about that topic.
$

Variables, Types and Constants

Variables

  • “zero value” for different variable types
  • inferred variable type:
    var age [int] = 29
  • multiple variable declaration:
    var width, height [int] = 100, 50

Types

Go does not allow automatic type promotion or conversion – “type conversion.”

bool (&&, ||)
string

int8  int16  int32  int64
int (32 or 64 depending)

uint8 uint16 uint32 uint64
uint (32 or 64 depending)

uintptr

float32 float64
complex64 complex128

byte // alias for uint8
rune // alias for int32

%T printf format specifier prints the type of something.

Constants

const i = 42
  • Value assigned to const must be known at compile time; cannot require any function execution.
  • Untyped constants have a default type associated with them and they supply it if and only if a line of code demands it. You can always created a typed constant if you want:
    const typedhello string = "Hello World"

Functions and Packages

Functions

  • return type follows parameter list

Packages

Conditional Statements and Loops

if else statement

Loops

Switch Statement

Arrays, Slices and Variadic Functions

Arrays and Slices

Variadic Functions

More Types

Maps

Strings

Pointers, Structures and Methods

Pointers

Structures

Methods

Interfaces

Interfaces I

Interfaces II

Concurrency

Introduction to Concurrency

Goroutines

Channels

Buffered Channels and Worker Pools

Select

Mutex

Object Oriented Programming

Structs instead of Classes

Composition instead of inheritance

Polymorphism

Defer and Error Handling

Defer

Error Handling

Custom Errors

Panic and Recover

First Class Functions

golangbot_tutorial.txt · Last modified: 2018/04/16 10:53 by rpjday