Skip to content

Go Basics

Table of Contents

Basic Types

Type Set of Values Values
bool boolean true/false
string array of characters needs to be inside ""
int integers 32 or 64 bit integer
int8 8-bit integers [ -128, 128 ]
int16 16-bit integers [ -32768, 32767]
int32 32-bit integers [ -2147483648, 2147483647]
int64 64-bit integers [ -9223372036854775808, 9223372036854775807 ]
uint8 8-bit unsigned integers [ 0, 255 ]
uint16 16-bit unsigned integers [ 0, 65535 ]
uint32 32-bit unsigned integers [ 0, 4294967295 ]
uint64 64-bit unsigned integers [ 0, 18446744073709551615 ]
float32 32-bit float
float64 64-bit float
complex64 32-bit float with real and imaginary parts
complex128 64-bit float with real and imaginary parts
byte sets of bits alias for uint8
rune Unicode characters alias for int32

Variables

// Declaration
var value int

// Initialization
value = 10

// Declaration + Initialization + Type inference
var isActive = true

// Short declaration (only inside functions)
text := "Hello"

// Multi declaration
var i, j, k = 1, 2, 3

// Variable not initialized = Zero values
// Numeric: 0
// Boolean: false
// String: ""
// Special value: nil (same as null)

var number int // 0
var text string // ""
var boolean bool // false

// Type conversions
// T(v) converts v to type T

i := 1.234 // float
int(i) // 1

// Constants
const pi = 3.1415

Operators

Arithmetic Operators

Symbol Operation Valid Types
+ Sum integers, floats, complex values, strings
- Difference integers, floats, complex values
* Product integers, floats, complex values
/ Quotient integers, floats, complex values
% Remainder integers
& Bitwise AND integers
| Bitwise OR integers
^ Bitwise XOR integers
&^ Bit clear (AND NOT) integers
<< Left shift integer << unsigned integer
>> Right shift integer >> unsigned integer

Comparison Operators

Symbol Operation
== Equal
!= Not equal
< Less
<= Less or equal
> Greater
>= Greater or equal

Logical Operators

Symbol Operation
&& Conditional AND
|| Conditional OR
! NOT

Conditional Statements

// If / Else
i := 1

if i > 0 {
    // Condition is True! i is greater than zero
} else {
    // Condition is False! i is lower or equal to zero
}

// Else if
i := 1

if i > 0 {
    // Condition is True! i is greater than zero
} else if i > 0 && i < 2 {
    // Condition is True! i greater than zero and lower than two
} else if i > 1 && i < 4 {
    // Condition is True! i greater than one and lower than four
} else {
    // None of the above conditions is True, so it falls here
}

// If with short statements
i := 2.567

if j := int(i); j == 2 {
    // Condition is True! j, the integer value of i, is equal to two
} else {
    // Condition is False! j, the integer value of i, is not equal to two
}

// Switch
text := "hey"

switch text {
    case "hey":
        // 'Hello!'
    case "bye":
        // 'Byee'
    default:
        // 'Ok'
}

// Switch without condition
value := 5

switch {
    case value < 2:
        // 'Hello!'
    case value >= 2 && value < 6:
        // 'Byee'
    default:
        // 'Ok'
}

Loops

// Golang only has the for loop
for i := 0; i < 10; i++ {
    // i
}

// The first and third parameters are ommitable
// For as a while
i := 0;

for i < 10 {
    i++
}

// Forever loop
for {

}