第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Go 入門教程

Go 語(yǔ)言基礎(chǔ)教程
01 Go語(yǔ)言簡(jiǎn)介 02 Go 在 Windows 上的安裝及配置 03 Go 在 Linux 上的安裝與配置 04 Go 在 MacOS 上的安裝及配置 05 Git 的下載和安裝 06 VSCode 編輯器安裝和配置 07 Go 的變量聲明 08 Go 的變量賦值 09 Go 語(yǔ)言的 := 10 Go 的整型(int) 11 Go 的無符號(hào)整型(uint) 12 Go 的浮點(diǎn)型(float) 13 Go 的字符類型 14 Go 的布爾型(bool) 15 Go 的強(qiáng)制類型轉(zhuǎn)換 16 Go 語(yǔ)言的常量 17 Go 語(yǔ)言中代替枚舉的辦法 18 Go 語(yǔ)言中的運(yùn)算符 19 Go 語(yǔ)言的分支語(yǔ)句 20 Go 語(yǔ)言的循環(huán)語(yǔ)句 21 Go 語(yǔ)言的通道 22 Go 語(yǔ)言中的函數(shù) 23 Go 語(yǔ)言函數(shù)中的 defer 24 Go 語(yǔ)言中的閉包 25 Go 語(yǔ)言的指針 26 Go 語(yǔ)言中的數(shù)組 27 Go 語(yǔ)言中的切片 28 Go 語(yǔ)言中的 Map 29 Go 語(yǔ)言中的 range 30 Go 語(yǔ)言拓展以有類型 31 Go 語(yǔ)言中的結(jié)構(gòu)體和"面向?qū)ο?quot; 32 Go 語(yǔ)言中的接口 33 Go 語(yǔ)言類型的內(nèi)嵌 34 Go 語(yǔ)言中的 nil 35 Go 語(yǔ)言函數(shù)式編程 36 Go 語(yǔ)言中的錯(cuò)誤和異常處理 37 Go 語(yǔ)言的并發(fā) 38 Go 語(yǔ)言中的包 39 Go 語(yǔ)言 go mod 包依賴管理工具 40 Go 語(yǔ)言的文件操作 41 Go 語(yǔ)言中的系統(tǒng)包 42 Go 語(yǔ)言的 strings 系統(tǒng)包的使用 43 Go 語(yǔ)言中的變參 44 Go 語(yǔ)言中的反射 45 Go 語(yǔ)言性能測(cè)試 46 使用 Go 語(yǔ)言搭建簡(jiǎn)易登錄功能 47 使用 gin 包優(yōu)化登錄功能
首頁(yè) 慕課教程 Go 入門教程 Go 入門教程 40 Go 語(yǔ)言的文件操作

40 Go 語(yǔ)言的文件操作

本文主要介紹 Go 語(yǔ)言中對(duì)文件系統(tǒng)的操作,Go 語(yǔ)言內(nèi)置庫(kù)中提供了豐富的文件操作函數(shù),所以本文主要介紹使用Go 語(yǔ)言中的內(nèi)置包——“os” 來實(shí)現(xiàn)文件操作。

1. 文件創(chuàng)建/打開

若你想創(chuàng)建/打開一個(gè)文件,則可以使用

func OpenFile(name string, flag int, perm uint32) (file *File, err Error)  

參數(shù)解釋:

  • name:就是文件名,若文件不在執(zhí)行程序目錄下,則可以使用文件的相對(duì)路徑或者絕對(duì)路徑。

  • flag:是文件打開模式,其支持模式共有(O_RDONLY|O_WRONLY|O_RDWR三個(gè)中必須要選一個(gè)):

    • O_RDONLY:以只讀方式打開文件;
    • O_WRONLY:以只寫方式打開文件;
    • O_RDWR:以讀寫方式打開文件;
    • O_APPEND:寫入時(shí)將數(shù)據(jù)追加到文件;
    • O_CREATE:如果不存在新文件,則創(chuàng)建一個(gè)新文件;
    • O_EXCL:與O_CREATE一起使用,文件不能存在;
    • O_SYNC:為同步I/O打開;
    • O_TRUNC:打開時(shí)截?cái)喑R?guī)可寫文件;
  • perm:文件權(quán)限,一般最高為0777。

代碼示例

package main

import (
    "fmt"
    "os"
)

func main() {
    f, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
    if err != nil {
        panic(err)
    }
    fmt.Println(f.Name())
}
  • 第 9 行:以讀寫的方式打開一個(gè)名為a.txt的文件,若文件不存在則創(chuàng)建這個(gè)文件,文件權(quán)限為0777;
  • 第 13 行:打印這個(gè)文件名;

執(zhí)行結(jié)果:

圖片描述

2. 文件讀取

文件打開之后,就可以從得到的文件對(duì)象中讀取文件內(nèi)容。我們?cè)?a.txt 文件中輸入 file test 字符串,來驗(yàn)證讀取結(jié)果。

代碼示例:

package main

import (
    "fmt"
    "os"
)

func main() {
    f, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
    if err != nil {
        panic(err)
    }
    b := make([]byte, 10) //最大讀取字符數(shù)量
    i, err := f.Read(b)
    if err != nil {
        panic(err)
    }
    fmt.Println(i)         //輸出讀取的字符串的個(gè)數(shù)
    fmt.Println(string(b)) //輸出讀取到的字符串
}

執(zhí)行結(jié)果:

圖片描述

3. 文件寫入

文件寫入有兩種模式,追加模式和覆寫模式。如果在打開文件的時(shí)候加上了 O_APPEND 模式,就是追加,如果不加就是覆寫。

代碼示例:

package main

import (
    "os"
)

func main() {
    f1, err := os.OpenFile("a.txt", os.O_RDWR|os.O_CREATE, 0777)
    if err != nil {
        panic(err)
    }
    f1.WriteString("覆寫字符")
    f1.Close()

    f2, err := os.OpenFile("b.txt", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0777)//追加模式打開文件
    if err != nil {
        panic(err)
    }
    f2.WriteString("追加字符")
}

反復(fù)執(zhí)行幾遍上述代碼,然后打開兩個(gè)文件,文件內(nèi)容如下:

覆寫的文件中只有"覆寫字符"這四個(gè)字,因?yàn)槠鋵懭氡徊粩喔矊懥恕?/p>

圖片描述

追加的文件中有很多"追加字符",因?yàn)槠鋵懭胧遣粩嗟谋蛔芳拥轿募┪驳摹?/p>

圖片描述

4. 小結(jié)

本文主要介紹了 Go 語(yǔ)言中自帶的 os 包的文件操作,需要注意的是文件的打開中若不確定文件是否存在,就可以加上 O_CREATE。改寫文件若是需要追加到文件末尾,記得在打開文件的時(shí)候要加上 O_APPEND。