package main import . "fmt" type Mat struct { a,b int c,d int } func (m *Mat) Mul(x *Mat) *Mat { return &Mat{ m.a * x.a + m.b * x.c, m.a * x.b + m.b * x.d, m.c * x.a + m.d * x.c, m.c * x.b + m.d * x.d, } } func (m *Mat) Scan(state ScanState, verb rune) error { _, err := Fscan(state, &m.a, &m.b, &m.c, &m.d) return err } func main() { m1, m2 := &Mat{}, &Mat{} Scan(m1, m2) m3 := m1.Mul(m2).Mul(m1.Mul(m2)) Println(m3.a, m3.b) Println(m3.c, m3.d) }