./golang/lecture/misc.txt

download original
TODO:

- (heap) allocation with make/new

- pass/return by value/reference(pointer)

- channels; use goroutines as coroutines

  - for producer/consumer

  - for state machine

    - write a webserver that outputs square numbers on each reload

- reflection erwaehnen

- funktionen als 1st class citizens + closures erwaehnen



https://tour.golang.org/moretypes/8

package main

import "fmt"
import "reflect"

func main() {
	var foo []int
	s := []int{2, 3, 5, 7, 11, 13}
	fmt.Println("s ==", s)
	fmt.Println("s[1:4] ==", s[1:4])
	foo = s[1:4]
	fmt.Println("", foo, reflect.TypeOf(foo))
	foo = s[2:4]
	fmt.Println("f2 ", foo, reflect.TypeOf(foo))
	foo = append(foo, 42)//,43,44,45,46,47)
	foo[1] = 17
	fmt.Println("", foo, reflect.TypeOf(foo))
	fmt.Println("s ==", s)

	// missing low index implies 0
	fmt.Println("s[:3] ==", s[:3])

	// missing high index implies len(s)
	fmt.Println("s[4:] ==", s[4:])
}



https://tour.golang.org/moretypes/14

package main

import "golang.org/x/tour/pic"

func Pic(dx, dy int) (result [][]uint8) {
	result = make([][]uint8, dy)
	for y := range result {
		result[y] = make([]uint8, dx)
		for x := range result[y] {
			result[y][x] = uint8((x+y)/2)
		}
	}
	return
}

func main() {
	pic.Show(Pic)
}






https://tour.golang.org/moretypes/19

package main

import (
	"golang.org/x/tour/wc"
	"strings"
)

func WordCount(s string) (result map[string]int) {
	result = make(map[string]int)
	for _,f := range strings.Fields(s) {
		if val, present := result[f]; present {
			result[f] = val + 1
		} else {
			result[f] = 1
		}
	}
	return
}

func main() {
	wc.Test(WordCount)
}




https://tour.golang.org/moretypes/22

package main

import "fmt"

// fibonacci is a function that returns
// a function that returns an int.
func fibonacci() func() int {
	s1,s2 := 1, 1
	return func() int {
		result := s1
		olds2 := s2
		s2 = s1 + s2
		s1 = olds2
		return result
	}
}

func main() {
	f := fibonacci()
	for i := 0; i < 10; i++ {
		fmt.Println(f())
	}
}

  
back to lecture

(C) 1998-2017 Olaf Klischat <olaf.klischat@gmail.com>