Integers
Like C++, it uses UTF-8 encoding for strings in Go.
./code/integers/main.go
package main
import (
"fmt"
"unsafe"
)
// int8 int16 int32 int64 int
// uint8 uint16 uint32 uint64 uint
//
// int != int32
// uint != uint32
//
// On 32-bit systems, int has 32 bits
// On 64-bit systems, int has 64 bits
func main() {
var i8 int8 = 1
fmt.Printf("i8 %[1]d %[1]T, %d\n", i8, unsafe.Sizeof(i8)) // int8 1 int8, 1
i8 += 127 // wrap around, same like c/c++
fmt.Printf("i8 %[1]d %[1]T\n", i8) // int8 -128 int8
// Note i has 8 bytes on my 64-bit macOS
i := 10
fmt.Printf("i %[1]d %[1]T, %d\n", i, unsafe.Sizeof(i)) // i 10 int, 8
fmt.Printf("i/3 %[1]d %[1]T\n", i/3) // i/3 3 int, same as c/c++
var i32 int32 = 100
fmt.Printf("i32 %[1]d %[1]T, %d\n", i32, unsafe.Sizeof(i32)) // i32 100 int32, 4
fmt.Printf("'%5d'\n", i32) // ' 100'
fmt.Printf("'%05d'\n", i32) // '00100'
fmt.Printf("'%-5d'\n", i32) // '100 '
}
Two kinds of for loops for strings
:
iterating it byte by byte
use for-range loop to iterate utf-8 encoded character by character