苏州市建设中心网站,html代码高亮,郑州建网站需要多少钱,html源码查看在线入门 命令行参数找出重复行常规版本涉及文件操作 命令行参数
命令行参数以os包中Args名字的变量供程序访问#xff0c;在os包外面#xff0c;使用os.Args这个名字
变量os.Args是一个字符串sliceos.Args[0]#xff1a;命令本身的名字os.Args[1:]#xff1a;另外的元素在os包外面使用os.Args这个名字
变量os.Args是一个字符串sliceos.Args[0]命令本身的名字os.Args[1:]另外的元素是程序开始执行时的参数
package main import ( fmt os strings
) func main() { //输出命令行名字 fmt.Println(os.Args[0]) s, sep : , // 每一次迭代range产生一对值索引和这个索引处元素的值 for _, arg : range os.Args[1:] { s sep arg sep } fmt.Println(s) fmt.Println(strings.Join(os.Args[1:], , ))
}空标识符_可以用在任何语法需要变量名但是逻辑不需要的地方
找出重复行
常规版本
// dup 输出标准输入中出现次数大于1的行前面是次数
package main import ( bufio fmt os
) func main() { counts : make(map[string]int) input : bufio.NewScanner(os.Stdin) for input.Scan() { counts[input.Text()] } for line, n : range counts { if n 1 { fmt.Printf(%d: %s\n, n, line) } }
}涉及文件操作
package main import ( fmt io/ioutil os strings) func main() { counts : make(map[string]int) for _, filename : range os.Args[1:] { data, err : ioutil.ReadFile(filename) if err ! nil { fmt.Fprintf(os.Stderr, dup2: %v\n, err) continue } for _, line : range strings.Split(string(data), \n) { counts[line] } } for line, n : range counts { if n 1 { fmt.Printf(%d: %s\n, n, line) } }
}