本文主要介紹了Go語(yǔ)言中文件讀寫(xiě)的相關(guān)操作。
成都地區(qū)優(yōu)秀IDC服務(wù)器托管提供商(創(chuàng)新互聯(lián)).為客戶提供專(zhuān)業(yè)的多線BGP機(jī)房,四川各地服務(wù)器托管,多線BGP機(jī)房、多線服務(wù)器托管.托管咨詢專(zhuān)線:18980820575
文件是什么?
計(jì)算機(jī)中的文件是存儲(chǔ)在外部介質(zhì)(通常是磁盤(pán))上的數(shù)據(jù)集合,文件分為文本文件和二進(jìn)制文件。
os.Open() 函數(shù)能夠打開(kāi)一個(gè)文件,返回一個(gè) *File 和一個(gè) err 。對(duì)得到的文件實(shí)例調(diào)用 close() 方法能夠關(guān)閉文件。
為了防止文件忘記關(guān)閉,我們通常使用defer注冊(cè)文件關(guān)閉語(yǔ)句。
Read方法定義如下:
它接收一個(gè)字節(jié)切片,返回讀取的字節(jié)數(shù)和可能的具體錯(cuò)誤,讀到文件末尾時(shí)會(huì)返回 0 和 io.EOF 。 舉個(gè)例子:
使用for循環(huán)讀取文件中的所有數(shù)據(jù)。
bufio是在file的基礎(chǔ)上封裝了一層API,支持更多的功能。
io/ioutil 包的 ReadFile 方法能夠讀取完整的文件,只需要將文件名作為參數(shù)傳入。
os.OpenFile() 函數(shù)能夠以指定模式打開(kāi)文件,從而實(shí)現(xiàn)文件寫(xiě)入相關(guān)功能。
其中:
name :要打開(kāi)的文件名 flag :打開(kāi)文件的模式。 模式有以下幾種:
perm :文件權(quán)限,一個(gè)八進(jìn)制數(shù)。r(讀)04,w(寫(xiě))02,x(執(zhí)行)01。
支持==和!=操作就可以做key,實(shí)際上只有function、map、slice三個(gè)kind不支持作為key,因?yàn)橹荒芎蚽il比較不能和另一個(gè)值比較。布爾、整型、浮點(diǎn)、復(fù)數(shù)、字符串、指針、channel等都可以做key。
struct能不能做key要看每一個(gè)字段,如果所有字段都可以做key,那這個(gè)struct就可以。有一個(gè)字段不能做key,這個(gè)struct就不能做key。array也是,元素類(lèi)型能做key,那這個(gè)array就可以。
例如:
type Foo map[struct {
B bool
I int
F float64
C complex128
S string
P *Foo
Ch chan Foo
}]bool
每一個(gè)字段都可以做key,F(xiàn)oo就可以做key。再如:
type Foo map[struct {
Fn func() Foo
M map[*Foo]int
S []Foo
}]bool
有一個(gè)字段不能做key、Foo就不允許做key,而這三個(gè)字段都不能。
字段是遞歸檢查的:
type Foo map[struct {
Sub struct {
M map[*Foo]bool
}
}]bool
Sub的M字段不能做key,Sub就不能做key,F(xiàn)oo也就不能做key。
總之想把一個(gè)數(shù)據(jù)結(jié)構(gòu)用于map的key,就不能包含function、map和slice。
Kotlin是一個(gè)跨編譯平臺(tái)的語(yǔ)言。 現(xiàn)在我們比較熟悉的是JVM平臺(tái)的Kotlin/JVM,但實(shí)際上還有Kotlin/javascript和正在開(kāi)發(fā)的Kotlin/Native。 對(duì)不同編譯平臺(tái)的Kotlin來(lái)說(shuō),各方面差異比較大,所以在此分開(kāi)討論。 先講講大家最熟悉的Kotlin/JVM。