k0kubun/pp
• Prettily print any complex data structures
• Simple APIs like “fmt”
import "github.com/k0kubun/pp"
for _, tweet := range tweets {
pp.Println(tweet)
}
Slide 5
Slide 5 text
k0kubun/pp
• Prettily print any complex data structures
• Simple APIs like “fmt”
reflectʹΑΔؔఆٛ
• ҙͷγάωνϟͷؔΛ࡞ΕΔ
var f func(int, int) int
v := reflect.MakeFunc(
reflect.TypeOf(f),
func(in []reflect.Value) []reflect.Value {
return []reflect.Value{in[0]}
},
)
reflect.ValueOf(&f).Elem().Set(v)
Slide 22
Slide 22 text
reflectʹΑΔؔݺͼग़͠
• ҙͷγάωνϟͷؔΛݺͼग़ͤΔ
f := func(a int, b int) int { return a + b }
v := reflect.ValueOf(f)
in := []reflect.Value{}
for i := 0; i < v.Type().NumIn(); i++ {
in = append(in, reflect.ValueOf(1))
}
v.Call(in)
Slide 23
Slide 23 text
reflectʹΑΔϝιουఆٛ
• ී௨ʹແཧ
Slide 24
Slide 24 text
reflectʹΑΔϝιουݺͼग़͠
• stringͰ໊લΛࢦఆͯ͠ϝιουΛݺͼग़ͤΔ
type Hoge struct{}
func (h Hoge) Foo() { print("foo") }
func (h Hoge) Bar() { print("bar") }
h := new(Hoge)
for _, name := range []string{"Foo", "Bar"} {
v := reflect.ValueOf(h)
v.MethodByName(name).Call([]reflect.Value{})
}
Slide 25
Slide 25 text
reflectʹΑΔnew
• ҙͷܕͷΛॳظԽͨ͠ͷΛ࡞ΕΔ
t := reflect.TypeOf(a)
reflect.New(t)