go-series table of content variable and type custom type function error handler pointer struct interface package testing goroutine & channel OOP