Юлия обнови решението на 25.10.2015 16:34 (преди над 2 години)
+package main
+
+import "strings"
+
+func ExtractColumn(logContents string, column uint8) string {
+        logLines := extractLines(logContents)
+        return getColumn(logLines, column)
+}
+
+func extractLines(logContents string) []string {
+        return strings.Split(logContents, "\n")
+}
+
+func getColumn(logContents []string, column uint8) string {
+        columnElements := make([]string, 0, len(logContents))
+
+        for _, logLine := range logContents {
+                if strings.TrimSpace(logLine) == "" {
+                        continue
+                }
+
+                lineColumns := strings.SplitN(logLine, " ", 4)
+                columnElements = append(columnElements, getElement(lineColumns, column))
+        }
+
+        return strings.Join(columnElements, "")
+}
+
+func getElement(lineColumns []string, column uint8) string {
+        if column == 0 {
+                return lineColumns[0] + " " + lineColumns[1] + "\n"
+        }
+        return lineColumns[column+1] + "\n"
+}
много ми харесва как:
- си разделила нещата на множество отделни функции които правят по едно нещо
- как си заделяш правилното количество елементи в columnElements предварително
Забележки:
- повтаряш се с това добавяне на но ред накрая
- може да намалиш конкатенацията на стрингове (новия ред  ) )
- дали не може да се отървеш от strings.TrimSpace(logLine) == ""?
TrimSpace-ът беше необходим заради бъг в теста :)
