Golang Go语言学习:一个字符串切片问题,求帮助

main.go 包内容

package main
import (
	"fmt"
	"os"
	"io/ioutil"
	"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,"errMsg:%v\n",err)
		}
		for _,line := range strings.Split(string(data),"\n"){
			counts[line]++
		}
	}
	for line,n := range counts{
			fmt.Printf("%d\t%s\n",n,line)
	}
}

1.txt 内容如下:

123
456
123
hello
hello

运行 go run main.go 1.txt ,显示结果如下:

2       123
1       456
1       hello
1       hello

到这里就蒙了,1.txt 里面 hello 是两行,为什么存到 map 里面的时候是分成两个来存储的?而且如果在 1.txt 里面最后一个 hello 后面加一个回车,map 里面 hello 的数量就是 2 个


Golang Go语言学习:一个字符串切片问题,求帮助

更多关于Golang Go语言学习:一个字符串切片问题,求帮助的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

Windows 换行符是\r\n

更多关于Golang Go语言学习:一个字符串切片问题,求帮助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


还真是,已解决,thx

在Go语言学习中遇到字符串切片问题是很常见的,我很乐意帮你解答。

首先,字符串切片([]string)在Go中是一个包含多个字符串的数组。处理字符串切片时,你可能会遇到诸如遍历、添加、删除或修改元素等操作。

  1. 遍历字符串切片: 使用for循环或range关键字可以方便地遍历字符串切片。例如:

    slice := []string{"a", "b", "c"}
    for _, str := range slice {
        fmt.Println(str)
    }
    
  2. 添加元素: 由于Go的数组长度是固定的,但切片是基于数组的动态数据结构,你可以使用内置的append函数向切片添加元素。

    slice = append(slice, "d")
    
  3. 删除元素: 删除切片中的元素通常涉及创建一个新的切片,因为切片不支持直接删除操作。你可以使用切片操作来实现这一点。

    slice = append(slice[:index], slice[index+1:]...)
    
  4. 修改元素: 直接通过索引访问并修改切片中的元素。

    slice[0] = "new_value"
    

如果你有更具体的问题或代码示例,请提供详细信息,这样我可以给出更精确的帮助。希望这些信息对你有所帮助!

回到顶部