Емилиан обнови решението на 25.10.2015 23:24 (преди над 2 години)
+package main
+
+import "strings"
+
+func ExtractColumn(logContents string, column uint8) string {
+        if len(logContents) > 28 {
+                var columns [3]string
+                var rows []string = strings.Split(logContents, "\n")
+                if len(rows) > 0 {
+                        for i := 0; i < len(rows); i++ {
+                                if rows[i] != "" {
+                                        var splittedRow []string = strings.SplitN(rows[i], " ", 4)
+                                        columns[0] += splittedRow[0] + " " + splittedRow[1] + "\n"
+                                        columns[1] += splittedRow[2] + "\n"
+                                        columns[2] += splittedRow[3] + "\n"
+                                }
+                        }
+                }
+                return columns[column]
+        } else {
+                return ""
+        }
+}
Изглежда добре, но:
- В Go е прието (а и в повечето езици) първо да се разглеждат "изключителните"/"грешните" случаи и след това да се продължава с не такивата - тоест по правилно е да се провери дали дължината не е твърде малка и после, не във else да се продължи. Else-а няма да трябва защото ще return-неш в if-а, което правиш и в момента :).
 - не съм убеден в тази проверка за дължината
 - виж точка 1 за if-а с 
len(rows) > 0 - може би същото за if-а с 
rows[i] != "" - на принцип не ми харесва че конструираш и трите възможни резултата при положение че знаеш кой ще трябва, но не е грешно, просто не е ефективно
 
