學習記錄:go語言中讀寫檔案的小練習

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
package mainimport ("os""fmt""bufio""strings""strconv")func main() {f, _:=os.OpenFile("a.txt", os.O_RDONLY, 0666)defer f.Close()m:=bufio.NewReader(f)char:=0words:=0lines:=0for{s, ok:=m.ReadString('\n')fmt.Println(s)char+=len(s)words+=len(strings.Fields(s))lines++if  ok!=nil{break}}fmt.Println("char:"+toString(char)+",words:"+toString(words)+",lines:"+toString(lines))}func toString(a interface{}) string{ if  v,p:=a.(int);p{ return strconv.Itoa(v) }if v,p:=a.(float64);  p{ return strconv.FormatFloat(v,'f', -1, 64)}if v,p:=a.(float32); p {return strconv.FormatFloat(float64(v),'f', -1, 32)} if v,p:=a.(int16); p {  return strconv.Itoa(int(v)) }  if v,p:=a.(uint); p {  return strconv.Itoa(int(v)) }  if v,p:=a.(int32); p {  return strconv.Itoa(int(v)) }return "wrong"}

程式的主要目的是讀取某檔案,輸出到螢幕,並輸出其中字數,單詞數,行數,這是一個來自《學習go語言》的練習題。

f, _:=os.OpenFile("a.txt", os.O_RDONLY, 0666)這一句是建立一個到a.txt的唯讀檔案流(其實我問高手說叫檔案資源控制代碼。我覺得好像流更好理解,就姑且讓我用流來描述)。

defer f.Close() 用到的是go語言中的壓後語句defer,確保在此函數結束後關閉流f。

m:=bufio.NewReader(f)在f流外麵包一層用來讀的緩衝管道,形成新的緩衝流m。

s, ok:=m.ReadString('\n') m讀取檔案,讀到'\n'時停下來,返回之前讀到的string

strings.Fields(s) 把s根據空白字元進行分割,得到一個字串數組還是slice切片?(恩恩,這點沒搞清楚,應該是切片,看來還得回去學習。。)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.