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

Creating summaries

In this section, we will develop a program that adds all the values of a given column of text with multiple lines. To make things even more interesting, the column number will be given as a parameter in the program. The main difference between the program of this subsection and readColumn.go from the previous subsection is that you will need to convert each value into an integer number.

The name of the program that will be developed is summary.go and can be divided into three parts.

The first part is this:

package main 
 
import ( 
   "fmt" 
   "os" 
   "strconv" 
   "strings" 
) 
 
func main() { 
   var s [3]string 
   s[0] = "1 b 3" 
   s[1] = "11 a 1 14 1 1" 
   s[2] = "-1 2 -3 -4 -5" 

The second part has the following Go code:

   arguments := os.Args 
   column, err := strconv.Atoi(arguments[1]) 
   if err != nil { 
         fmt.Println("Error reading argument") 
         os.Exit(-1) 
   } 
   if column == 0 { 
         fmt.Println("Invalid column") 
         os.Exit(1) 
   } 

The previous code reads the index of the column that interests you. If you want to make summary.go even better, you can check for negative values in the column variable and print the appropriate error message.

The last part of summary.go is as follows:

   sum := 0 
   for i := 0; i < len(s); i++ { 
         data := strings.Fields(s[i]) 
         if len(data) >= column { 
               temp, err := strconv.Atoi(data[column-1]) 
               if err == nil { 
                     sum = sum + temp 
               } else { 
                     fmt.Printf("Invalid argument: %s\n", data[column-1]) 
               } 
         } else { 
               fmt.Println("Invalid column!") 
         } 
   } 
   fmt.Printf("Sum: %d\n", sum) 
} 

As you can see, most of the Go code in summary.go is about dealing with exceptions and potential errors. The core functionality of summary.go is implemented in a few lines of Go code.

Executing summary.go will give you the following output:

$ go run summary.go 0
Invalid column
exit status 1
$ go run summary.go 2
Invalid argument: b
Invalid argument: a
Sum: 2
$ go run summary.go 1
Sum: 11
主站蜘蛛池模板: 沁阳市| 灵寿县| 方城县| 白玉县| 惠东县| 府谷县| 微博| 阿巴嘎旗| 突泉县| 彰化县| 龙门县| 新和县| 台山市| 朝阳市| 乌什县| 忻城县| 宣化县| 丹棱县| 丹江口市| 洛宁县| 普洱| 英德市| 木兰县| 眉山市| 措勤县| 望奎县| 灵川县| 尼勒克县| 迁西县| 海林市| 蕉岭县| 天门市| 白水县| 尚义县| 和硕县| 游戏| 泰兴市| 建瓯市| 禹州市| 武宁县| 文登市|