官术网_书友最值得收藏!

Printing all the values from a given column of a line

This is a very common scenario, as you often will need to get all the data from a given column of a structured text file in order to analyze it afterward. The code of readColumn.go, which prints values in the third column, will be presented in two parts.

The first part is as follows:

package main 
 
import ( 
   "fmt" 
   "strings" 
) 
 
func main() { 
   var s [3]string 
   s[0] = "1 2 3" 
   s[1] = "11 12 13 14 15 16" 
   s[2] = "-1 2 -3 -4 -5 6" 

Here, you import the required Go packages and define a string with three lines using an array with three elements.

The second part contains the following Go code:

   column := 2 
 
   for i := 0; i < len(s); i++ { 
         data := strings.Fields(s[i]) 
         if len(data) >= column { 
               fmt.Println((data[column-1])) 
         } 
   } 
} 

First, you define the column that interests you. Then, you start iterating over the strings stored in the array. This is similar to reading a text file line by line. The Go code inside the for loop splits the fields of the input line, stores them in the data array, verifies that the value from the desired column is present, and prints it on your screen. All of the hard work is done by the handy strings.Fields() function that splits a string based on whitespace characters, as defined in unicode.IsSpace(), and returns a slice of strings. Although readColumn.go does not use the regexp.Compile() function, the logic behind its implementation with the use of strings.Fields() is still based on the principles of regular expressions.

An important thing to remember is that you should never trust your data. Put simply, always verify that the data you expect to grab is there.

Executing readColumn.go will generate the following kind of output:

$ go run readColumn.go
2
12
2

Chapter 6, File Input and Output, will show an improved version of readColumn.go that you can use as a starting point in case you want to modify the rest of the examples shown.

主站蜘蛛池模板: 乌什县| 涟水县| 甘泉县| 广昌县| 界首市| 道真| 湛江市| 普兰店市| 阿合奇县| 济宁市| 常州市| 富平县| 辰溪县| 鹿泉市| 神农架林区| 虹口区| 许昌市| 辛集市| 开鲁县| 防城港市| 巴林右旗| 巴南区| 永善县| 崇文区| 洛宁县| 佛冈县| 泽库县| 秀山| 阿拉善右旗| 上高县| 和林格尔县| 九江县| 泽州县| 西宁市| 屏东县| 绿春县| 林西县| 邮箱| 雷州市| 阿巴嘎旗| 淮南市|