最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang的os標(biāo)準(zhǔn)庫中常用函數(shù)的整理介紹

 更新時間:2015年10月28日 15:48:07   投稿:goldensun  
這篇文章主要介紹了Go語言的os標(biāo)準(zhǔn)庫中常用函數(shù),主要用來實現(xiàn)與操作系統(tǒng)的交互功能,需要的朋友可以參考下

os.Rename()這個函數(shù)的原型是func Rename(oldname, newname string) error,輸入的是舊文件名,新文件名,然后返回一個error其實這個函數(shù)的真正實現(xiàn)用的syscall.Rename()然后通過MoveFile(from *uint16, to *uint16) (err error) = MoveFileW來重新命名

復(fù)制代碼 代碼如下:

 import (
 "fmt"
 "os"
)

func main() {
 err := os.Rename("1.go", "2.go")
 if err != nil {
  if os.IsExist(err) { //判斷一個是否文件已經(jīng)存在的錯誤
   fmt.Println("文件已經(jīng)存在")
   os.Rename("1.go", "widuu_1.go")
  }
 }
}


os.SameFile()這個函數(shù)的作用是檢測文件的信息是否相同所謂文件信息指的是os.Stat(),函數(shù)原型是func SameFile(fi1, fi2 FileInfo) bool
舉個例子
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 f1, _ := os.Stat("1.go")
 f2, _ := os.Stat("21.go")
 if os.SameFile(f1, f2) {
  fmt.Println("兩個文件一樣")
  return
 }
 fmt.Println("兩個文件不一樣")
}


os.Setenv()這個函數(shù)是設(shè)置環(huán)境變量的很簡單,函數(shù)原型func Setenv(key, value string) error輸入對應(yīng)的key-value字符串,返回error信息
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 err := os.Setenv("WD_PATH", "D:/golang")
 if err != nil {
  fmt.Println(err)
 }
 env := os.Getenv("WD_PATH")
 fmt.Println(env) //返回的是D:/golang
}


os.Symlink()對于這個函數(shù)我只能說不支持windows平臺的,創(chuàng)建軟連接func Symlink(oldname, newname string) error
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 err := os.Symlink("1.go", "21.go") //不支持windows平臺只支持linux和unix
 fmt.Println(err)
}


os.TempDir()這個函數(shù)很簡單,返回你本地的系統(tǒng)temp目錄,函數(shù)原型func TempDir() string,嘿嘿,做個對比別亂了
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "io/ioutil"
 "os"
)

func main() {
 //創(chuàng)建臨時的tmp
 dir, _ := os.Getwd()
 path, _ := ioutil.TempDir(dir, "tmp")
 fmt.Println(path) //D:\test\tmp764030415
 //這個返回的是系統(tǒng)temp
 temp := os.TempDir()
 fmt.Println(temp) //windows來說C:\Users\ADMINI~1\AppData\Local\Temp
}


os.Truncate()改變文件的f.Size()這個就改變了文件內(nèi)容的長度了,函數(shù)原型func Truncate(name string, size int64) error,記得哈第二個是int64
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 f, _ := os.Stat("1.go")
 fmt.Println(f.Size())   //1.go 83
 err := os.Truncate("1.go", 10) 
 if err != nil {
  fmt.Println(err)
 }
 f, _ = os.Stat("1.go")
 fmt.Println(f.Size())    //1.go現(xiàn)在是10 文件也變成了package ma
}


os.Create()這個函數(shù)是創(chuàng)見一個文件,函數(shù)的原型是func Create(name string) (file *File, err error)輸入的是名稱字符串類型,返回的是一個File的指針和一個error
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
 "reflect"
)

func main() {
 f, _ := os.Create("widuu_2.go")
 defer f.Close()
 fmt.Println(reflect.ValueOf(f).Type()) //*os.File
}


這個函數(shù)的原理其實是這樣的OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666) O_RDWR也就是說用讀寫的權(quán)限,O_CREATE然后文件存在忽略,不存在創(chuàng)建它,O_TRUNC文件存在截取長度為0,這就解釋了為什么我們明明有這個文件,我擦,創(chuàng)建之后哭了~啥都沒有了~~用的時候需謹(jǐn)慎,先判斷文件是否存在~

os.OpenFile函數(shù)的原型是func OpenFile(name string, flag int, perm FileMode) (file *File, err error)要指定文件權(quán)限和打開的方式,就是我們上邊所用到的

復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 f, _ := os.OpenFile("10.go", os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0777)
 defer f.Close()
 fmt.Println(f.Stat())
}


這個就是上邊的Create()只不過權(quán)限是0777以及下邊的操作等大部分用到OpenFile()

os.Open()這個函數(shù)是打開文件使用的,函數(shù)原型是func Open(name string) (file *File, err error),返回值就不說了一樣的,它的其實原理是這樣的OpenFile(name, O_RDONLY, 0)以讀文件的模式打開

復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
 "reflect"
)

func main() {
 f, _ := os.Open("1.go")
 defer f.Close()
}


os.Stat()這個是獲取fileinfo的結(jié)構(gòu)描述func Stat(name string) (fi FileInfo, err error)返回了Fileinfo這個結(jié)構(gòu),我們再前邊也詳細(xì)講了
,其實它是怎么實現(xiàn)的呢?因為我們沒講syscall所以我們就講一個,譬如FileInfo底層獲取fs := &fileStat{name: basename(name)}然后后邊邏輯大家可以看源代碼
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 f, _ := os.Stat("1.go")
 fmt.Println(f.Size())
}


os.Fd()返回文件的句柄,函數(shù)原型是func (file *File) Fd() uintptr函數(shù)是這樣的uintptr(file.fd) 返回的是文件的句柄,句柄是什么?句柄,是整個windows編程的基礎(chǔ)。一個句柄是指使用的一個唯一的整數(shù)
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 f, _ := os.Open("1.go")
 fmt.Println(f.Fd()) //我的平臺句柄是228
}


os.Pipe()這個函數(shù)獲取的函數(shù)的讀寫指針,函數(shù)原型func Pipe() (r *File, w *File, err error)
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 r, w, _ := os.Pipe()
 fmt.Println(r, w) //&{0xc08402e120} &{0xc08402e180}
}


os.NewFile()函數(shù)原型是func NewFile(fd uintptr, name string) *File 第一個傳入的是句柄,然后是文件名稱,這個函數(shù)并不是真的創(chuàng)建了一個文件,是新建一個文件不保存,然后返回文件的指針
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 f, _ := os.Open("ini.go")
 defer f.Close()
 f1 := os.NewFile(f.Fd(), "ceshi.go") //輸如ini.go的句柄
 defer f1.Close()
 fd, _ := f1.Stat()
 fmt.Println(fd.ModTime()) //返回的是ini.go的創(chuàng)建時間2013-11-27 09:11:50.2793737 +0800 CST

}


(f *File).Chdir()修改工作目錄,函數(shù)原型func (f *File) Chdir() error,這個時候f必須是目錄了,但是吧這個不支持windows
復(fù)制代碼 代碼如下:

import (
 "fmt"
 "os"
)

func main() {
 dir, _ := os.Getwd()
 fmt.Println(dir)
 f, _ := os.Open("views")
 err := f.Chdir()
 if err != nil {
  fmt.Println(err)
 }
 dir1, _ := os.Getwd()
 fmt.Println(dir1)
}

相關(guān)文章

  • golang中的net/rpc包使用概述(小結(jié))

    golang中的net/rpc包使用概述(小結(jié))

    本篇文章主要介紹了golang中的net/rpc包使用概述(小結(jié)),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • go語言中的二維切片賦值

    go語言中的二維切片賦值

    這篇文章主要介紹了go語言中的二維切片賦值操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 4個場景教會你Go中Goroutine和通道是怎么用的

    4個場景教會你Go中Goroutine和通道是怎么用的

    本篇給出了4個在運維開發(fā)工作中較為常見的且也是比較典型的場景,通過這些場景來帶大家掌握Go中Goroutine和通道是怎么使用的,需要的可以學(xué)習(xí)一下
    2023-05-05
  • Golang使用ini庫讀取配置詳情

    Golang使用ini庫讀取配置詳情

    這篇文章主要介紹了Golang使用ini庫讀取配置詳情,go-ini是一個非常方便、高效的go配置文件操作庫。使用它在項目中讀取和修改配置文件,下文相關(guān)資料需要的小伙伴可可以參考一下
    2022-04-04
  • Go語言中slice作為參數(shù)傳遞時遇到的一些“坑”

    Go語言中slice作為參數(shù)傳遞時遇到的一些“坑”

    這篇文章主要給大家介紹了關(guān)于Go語言中slice作為參數(shù)傳遞時遇到的一些“坑”,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • golang小游戲開發(fā)實戰(zhàn)之飛翔的小鳥

    golang小游戲開發(fā)實戰(zhàn)之飛翔的小鳥

    這篇文章主要給大家介紹了關(guān)于golang小游戲開發(fā)實戰(zhàn)之飛翔的小鳥的相關(guān)資料,,本文可以帶你你從零開始,一步一步的開發(fā)出這款小游戲,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • 解決Golang中ResponseWriter的一個坑

    解決Golang中ResponseWriter的一個坑

    這篇文章主要介紹了解決Golang中ResponseWriter的一個坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Go?Web開發(fā)之Gin多服務(wù)配置及優(yōu)雅關(guān)閉平滑重啟實現(xiàn)方法

    Go?Web開發(fā)之Gin多服務(wù)配置及優(yōu)雅關(guān)閉平滑重啟實現(xiàn)方法

    這篇文章主要為大家介紹了Go?Web開發(fā)之Gin多服務(wù)配置及優(yōu)雅關(guān)閉平滑重啟實現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Golang中String,rune和byte的相互轉(zhuǎn)換

    Golang中String,rune和byte的相互轉(zhuǎn)換

    Go語言中,string就是只讀的采用utf8編碼的字節(jié)切片,rune是int32的別名,代表字符的Unicode編碼,這篇文章主要介紹了Golang中String,rune和byte的相互轉(zhuǎn)換,感興趣的小伙伴可以了解一下
    2023-10-10
  • 深入解析Go語言中for循環(huán)的寫法

    深入解析Go語言中for循環(huán)的寫法

    這篇文章主要介紹了Go語言中for循環(huán)的寫法,是Golang入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10

最新評論

焉耆| 石楼县| 昌江| 美姑县| 吐鲁番市| 岗巴县| 山丹县| 海城市| 石台县| 舞钢市| 宁乡县| 赣榆县| 尉氏县| 玉山县| 常熟市| 星座| 漾濞| 安仁县| 金秀| 奈曼旗| 云和县| 深圳市| 含山县| 乐东| 托克逊县| 东阳市| 平定县| 巴里| 莎车县| 长寿区| 图片| 滦平县| 武威市| 永济市| 宜州市| 荃湾区| 曲阜市| 余干县| 龙口市| 横峰县| 卢湾区|