GO语言圣经报个BUG

xawi2000 · · 2030 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

多年C、C++开发者,刚学GO 二天,目前对着GO语言圣经练习。 https://docs.ruanjiadeng.com/gopl-zh/ch1/ch1-03.html 发现示例程序dup3和dup2的执行结果不一致, 当输入的文件最后一行不是一个换行时。 gopl.io/ch1/dup3 ```go 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, "dup3: %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\t%s\n", n, line) } } } ``` 经过调试分析,发现将 `strings.Split(string(data), "\n")` 改成 `strings.Split(string(data), "\r\n") `,看来GO标准库没有像C一样, 把WINDOWS平台上的换行"\n"替换成"\r\n"。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2030 次点击  ∙  1 赞  
加入收藏 微博
3 回复  |  直到 2016-08-12 17:09:27
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传