亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Mac 上按下 Ctrl-D 時,Golang 錯誤是 <nil> 而不是 EOF

在 Mac 上按下 Ctrl-D 時,Golang 錯誤是 <nil> 而不是 EOF

Go
慕碼人2483693 2022-06-06 15:46:19
我的代碼如下。這是一個簡單的回聲程序package mainimport (    "fmt"    "io"    "log"    "os")func main() {    mustCopy(os.Stdout, os.Stdin)}func mustCopy(dst io.Writer, src io.Reader) {    _, err := io.Copy(dst, src)    fmt.Println(err)    if err != nil {        log.Fatal(err)    }}我還使用stty all它^D作為 eof檢查了 Mac 上 EOF 的鍵盤映射程序輸出如下abbcc<nil>
查看完整描述

2 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

根據文檔golang.org/pkg/io/#Copy 和@BrunoReis 指出的Copy行為與預期一樣,err如果nil由于Copy以下原因而終止EOF



查看完整回答
反對 回復 2022-06-06
?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

在下文中,我們將替換io.Copy為io.CopyN以設置更高的期望并提前關閉。


package main


import (

  "fmt"

  "io"

  "log"

  "os"

)


func main() {

  mustCopy(os.Stdout, os.Stdin)

}


func mustCopy(dst io.Writer, src io.Reader) {

  _, err := io.CopyN(dst, src, 2000) // 2000 is arbitrary, just big enough


  fmt.Println(err)

  if err != nil {

    log.Fatal(err)

  }

}

示例運行:


a

a

b

b

c

c

EOF

2020/05/26 02:26:04 EOF

exit status 1


查看完整回答
反對 回復 2022-06-06
  • 2 回答
  • 0 關注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號