func displayTable(orders [][]string) (ret [][]string) { tb := make([]map[string]int, 501) title := []string{} foodMap := map[string]bool{} for _, v := range orders { tbNum, _ := strconv.Atoi(v[1]) food := v[2] if tb[tbNum] == nil { tb[tbNum] = map[string]int{} } if !foodMap[food] { title = append(title, food) foodMap[food] = true } tb[tbNum][food]++ } sort.Strings(title) title = append([]string{"Table"}, title...) ret = append(ret, title) for tbNum := 1; tbNum < 501; tbNum++ { if tb[tbNum] == nil { continue } row := []string{strconv.Itoa(tbNum)} for i := 1; i < len(title); i++ { if x, ok := tb[tbNum][title[i]]; ok { row = append(row, strconv.Itoa(x)) continue } row = append(row, "0") } ret = append(ret, row) } return ret}