Go 基礎 標準輸入輸出

2021-10-24 12:12:38 字數 3737 閱讀 6889

本文主要參考csdn以及golang官方文件書寫,主要是fmt包提供的標準輸入輸出的筆記;

fmt.scan/sscan/fscan 以及對應的*f,*ln和print類族

二. 標準輸出

三. io.reader/io.writer

補充:

1. fmt.scan/fmt.scanf/fmt.scanln
這三個方法接收n個指標型別的引數(包括string 指標)將os.stdin 輸入內容傳入 引數變數中;

使用指標的目的是為確保基本型別的輸入能夠真正修改輸入的變數;

var i int

fmt.

scan

(&i)

fmt.

scanf

("%d"

,&i)

fmt.

scanln

(&i)

2. fmt.sscan/fmt.sscanf/fmt.sscanln
這三個方法是從string 中讀取值,用將string取代 標準輸入;
s :=

"abc 1 2"

var s_ string

var i,j int

fmt.

sscan

(s,&s_,

&i,&j)

fmt.

sscanf

(s,"%s $d $d"

,&s_,

&i,&j)

fmt.

sscanln

(s,&s_,

&i,&j)

3. fmt.fscan/fmt.fscanf/fmt.fscanln
這三個方法則是通過在提供的實現了io.reader 介面的read方法的輸入源中輸入整體類似```fmt.sscan```
var i int

fmt.

fscan

(os.stdin,

&i)fmt.

fscanf

(os.stdin,

"%d"

,&i)

fmt.

fscanln

(os.stdin,

&i)

4. bufio.reader.read***
使用類似```fmt.fscan```的方法,通過讀取標準stdin 輸入進行輸入,

使用bufio 的目的是它可以設定部分讀取後部分處理然後再處理後面的內容,

中間出現型別或者格式錯誤依舊可以處理

in := bufio.

newreader

(os.stdin)

ret,err := in.

readstring

('\n'

)//這裡是分隔符作為引數,會將分隔符作為空格使用

/* 此外還有

bufio.reader.read(p byte) (n int, err error)

bufio.reader.readbyte() (byte, error)

bufio.reader.readbytes(delim byte) (byte, error)

....

*/

5.總結
對於fmt.*scan*系列,遇到錯誤(型別或者格式上的錯誤)會將不會重新讀取輸入除非換輸入源;想要避免這個問題可以使用換源或者使用bufio 作為輸入字串然後進行解析的方式避免

由於輸入輸出比較類似,所以僅僅列舉輸出方法,與輸入的區別主要體現在返回值的不同上
// @return n int, err error 

fmt.print

fmt.println

fmt.printf // 由於輸出僅需要值傳遞所以使用原數值進行值傳遞

//@return s string

fmt.

sprint

(a...

inte***ce

)fmt.

sprintf

(format string

, a...

inte***ce

)fmt.

sprintln

(a...

inte***ce

)//@return n int,err error | 這一簇是通過將向實現了io.writer介面(即其write方法)的物件源中輸入值

fmt.

fprint

(io.writer,a...

inte***ce

)fmt.

fprintf

(io.writer,format string

, a...

inte***ce

)fmt.

fprintln

(io.writer,a...

inte***ce

)//此種方法下依舊可以使用bufuio或者io等方法

bufio.

newwriter

(io.writer)

bufio.

newwritersize

(io.writer,size)

(n int,err error)

string) (n int, err error)

//注意此處,完全輸出最好需要flush

io.reader:

type reader inte***ce

io.writer:

type writer inte***ce

格式化對照表

%% : 乙個%字面量

%b : 乙個二進位制整數值(基數為2),或者是乙個(高階的)用科學計數法表示的指數為2的浮點數

%c : 字元型。可以把輸入的數字按照ascii碼相應轉換為對應的字元

%d : 乙個十進位制數值(基數為10)

%e : 以科學記數法e表示的浮點數或者復數值

%e : 以科學記數法e表示的浮點數或者復數值

%f : 以標準記數法表示的浮點數或者復數值

%g : 以%e或者%f表示的浮點數或者複數,任何乙個都以最為緊湊的方式輸出

%g : 以%e或者%f表示的浮點數或者複數,任何乙個都以最為緊湊的方式輸出

%o : 乙個以八進位制表示的數字(基數為8)

%p : 以十六進製制(基數為16)表示的乙個值的位址,字首為0x,字母使用小寫的a-f表示

%q : 使用go語法以及必須時使用轉義,以雙引號括起來的字串或者位元組切片byte,或者是以單引號括起來的數字

%s : 字串。輸出字串中的字元直至字串中的空字元(字串以'\0『結尾,這個'\0'即空字元)

%t : 以true或者false輸出的布林值

%t : 使用go語法輸出的值的型別

%u : 乙個用unicode表示法表示的整型碼點,預設值為4個數字字元

%v : 使用預設格式輸出的內建或者自定義型別的值,或者是使用其型別的string()方式輸出的自定義值,如果該方法存在的話

%x : 以十六進製制表示的整型值(基數為十六),數字a-f使用小寫表示

%x : 以十六進製制表示的整型值(基數為十六),數字a-f使用小寫表示

標準輸入輸出

linux的大部分命令都具有標準的輸入輸出埠,有哪些標準裝置資訊?名稱 檔案描述符 含義裝置 說明stdin 0標準輸入 鍵盤命令在執行時所需要的輸入資料,通過它來獲取 stdout 1標準輸出 顯示器命令在執行後所產生的輸出資料,通過它來送出 stderr 2標準錯誤 顯示器命令在執行後所產生的錯...

標準輸入輸出

目錄流緩衝 格式輸出 格式輸入 目錄流緩衝 格式輸出 格式輸入 記錄下,了解概念。當用流或檔案描述字i o函式開啟乙個檔案時,分別返回乙個流或檔案描述字,後面就可以將這個流或檔案描述字作為引數交給相應讀寫函式來完成實際的讀寫操作。通過關閉檔案可以終止程式與檔案的連線。檔案描述字表示為int型別的物件...

python標準輸入輸出

sys模組 usr bin python2.6 import sysfor line in sys.stdin print line,先寫乙個指令碼,顯示行號和內容,之後引用它 usr bin env python import sys counter 1 while true line sys.s...