Go語言輸入輸出

2021-10-25 22:26:38 字數 2770 閱讀 8610

輸入和輸出是程式語言使用比較基礎,但容易被忽視的地方。因為實際開發的都是不會使用命令列,但這方面仍然是需要我們掌握的知識點。

go語言中函式就是指類似c語言的函式,而方法指的是實現了介面的函式,兩個在概念上是不一樣的。

首先go語言fmt包中提供了scanfprintf像c語言那樣處理輸入和輸出,使用的格式控制字元中常見的和c語言一致,一部分則不一致。

go轉義字元

格式控制字元,又稱轉義字元,它對應乙個變數名,以指定的格式將變數連線到輸出的字串中,它在字串中相當於佔位符,所處位置的內容將會被轉化成對應格式的變數值替代。

go語言中的轉義字元(go程式設計師稱為verb),像%d%s%f和c語言保持一致,但同時也有一些不一樣的格式控制字元,總結如下:

verb

description

%d十進位制正數

%x, %o, %b

十六進製制,八進位制,二進位制正數

%f, %g, %e

單精度,雙精度,科學計數法表示浮點數

%t布林型:true或false

%c字元

%s字串

%q帶引號字串(「abc」)或字元(『c』)

%v內建格式的任何值

%t任何值的型別

%%百分號本身

注:(因為%被用作轉義字元標誌了,所以要想輸出百分需要用百分號轉義一下)。

例項(其他資料型別同理)。

package main

import

"fmt"

func

main()

// 輸入

4// 輸出

4

不使用轉義字元

轉義字元是用來明確指定資料型別的,如果不需要明確指定,fmt包下提供了對應的scan()print(),用法也一致,不再舉例。

多種形式的輸出 區別

print()系列在golang中是屬於輸出到標準錯誤流中並列印,官方不建議寫程式時候用它,可以在debug時候用。

fmt.print()系列對應的是標準的輸入輸出流,建議使用。

go語言流式處理標準輸入使用bufio包中的newscanner方法,來讀取os包下預置的stdin,即標準輸入流。流的概念的的話,是所有程式語言共享的,因此這裡不再贅述。

bufio,顧名思義,包下的工具以帶緩衝的方式處理輸入輸出流。

找出重複行 命令列讀取

本例來自go語言聖經,變數名略有改動。

// 模擬unix uniq命令 找到相鄰的重複行

package main

import

("bufio"

"fmt"

"os"

)func

main()

for line, n :=

range count

}}

// 輸入用例 ^d 是鍵盤 ctrl+d 告知系統輸入結束

bear

bear

peach

orange

orange

orange

banana^d

// 輸出結果

2 bear

3 orange

找出重複行 檔案讀取
本例來自go語言聖經,變數名略有改動。

go語言讀檔案需要用到io/ioutil包下的readfile方法。以下這個例子還使用到了strings包下的split方法,用於分割字串。

// 模擬unix uniq命令 找到相鄰的重複行

package main

import

("fmt"

"io/ioutil"

"os"

"strings"

)func

main()

for_

, line :=

range strings.

split

(string

(data)

,"\n")}

for line, n :=

range count

}}

輸入樣例

// file1

steve

mike

john

// file2

michael

steve

riven

執行結果

d:\goproject\main>go run io******.go file1.txt file2.txt

2 steve

go程式語言(the go programming language中文版) 機械工業出版社

c/c++——c語言格式化輸入輸出

go 輸入輸出流 ioutil

雖然 io 包提供了不少型別 方法和函式,但有時候使用起來不是那麼方便。比如讀取乙個檔案中的所有內容。為此,標準庫中提供了一些常用 方便的io操作函式。說明 這些函式使用都相對簡單,一般就不舉例子了。有時候我們需要傳遞乙個io.readcloser的例項,而我們現在有乙個io.reader的例項,比...

Go 基礎 標準輸入輸出

本文主要參考csdn以及golang官方文件書寫,主要是fmt包提供的標準輸入輸出的筆記 fmt.scan sscan fscan 以及對應的 f,ln和print類族 二.標準輸出 三.io.reader io.writer 補充 1.fmt.scan fmt.scanf fmt.scanln這三...

R語言 輸入輸出

在s互動執行時要顯示某乙個物件的值只要鍵入其名字即可,如 x 1 10 x 1 1 2 3 4 5 6 7 8 9 10這實際上是呼叫了print 函式,即print x 在非互動執行 程式 中應使用print 來輸出。print 函式可以帶乙個digits 引數指定每個數輸出的有效數字位數,可以帶...