Go - gwenn/hypomnemata GitHub Wiki
- array: value type.
- channel: reference type (with 'make').
- map: reference type (with 'make').
- slice: reference type (with 'make').
- string: const (immutable) reference type.
- user defined data type: value type except with 'new': pointer/reference type.
package main
import "fmt"
func main() {
var i int
fmt.Printf("int: %d\n", i) // int: 0
var f float64
fmt.Printf("float: %f\n", f) // float: 0.000000
var s string
fmt.Printf("string: '%v'\n", s) // string: ''
var b bool
fmt.Printf("bool: %t\n", b) // bool: false
var a interface{}
fmt.Printf("any: %v\n", a) // any: <nil>
var sl []interface{}
fmt.Printf("slice: %v\n", sl) // slice: []
// sl[0] = 1 panic
var sli []interface{} = make([]interface{}, 2)
fmt.Printf("slice init: %v\n", sli) // slice init: [<nil> <nil>]
sli[0] = 1
var m map[string]int
fmt.Printf("map: %v\n", m) // map: map[]
// m["test"] = 1 panic
var mi map[string]int = make(map[string]int)
fmt.Printf("map init: %v\n", mi) // slice init: map[]
mi["test"] = 1
}Exponential:
package main
import "fmt"
func main() {
var rate float64 = 3. / 100.
fmt.Printf("Rate: %.2f\n", rate)
var initial_amount float64 = 100.
amount := initial_amount
for year := 1; amount < (initial_amount * 2); year++ {
amount += amount * rate
fmt.Printf("After %d years: %.2f\n", year, amount)
}
}