一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Golang - Go語言的os包中常用函數初步歸納

Go語言的os包中常用函數初步歸納

2020-04-27 11:42腳本之家 Golang

這篇文章主要介紹了Go語言的os包中常用函數初步歸納,用于一些和系統交互功能的實現,需要的朋友可以參考下

(1)os.Getwd函數原型是func Getwd() (pwd string, err error) 返回的是路徑的字符串和一個err信息,為什么先開這個呢?因為我看os的包的時候第一個是Chkdir這個包,但是你不知道當前目錄怎么知道改變目錄了呢?所以先說Getwd() 函數demo

復制代碼 代碼如下:


import (
 "fmt"
 "os"
)

 

func main() {
 dir, _ := os.Getwd()
 fmt.Println("當前的目錄是:", dir)  //當前的目錄是: D:\test 我的環境是windows 如果linix 就是/xxx/xxx
}


(2)既然說了Getwd()了,我們就把os里邊的Get全部都說了吧!os.Getenv()獲取系統的環境變量,函數原型是func Getenv(key string) string輸入的是一個string的環境變量名稱,返回的是值

復制代碼 代碼如下:


import (
 "fmt"
 "os"
)

 

func main() {
 path := os.Getenv("GOPATH")
 fmt.Println("環境變量GOPATH的值是:", path) //windows下 環境變量PATH的值是: D:\test;C:\Go\bin; linux 環境變量GOPATH的值是: /data/goweb
}


(3)下邊的get信息 如果沒有:=的就是返回的都是int一般很少用到的 我就給注釋了做什么的?然后windows和linux結果是什么?
 fmt.Println(os.Getegid())      windows -1  linux  0     //調用者的group的id
 fmt.Println(os.Geteuid())     windows -1  linux  0     //用戶的uid
 fmt.Println(os.Getgid())      windows -1  linux  0     //調用者的gid的id
 g, _ := os.Getgroups()       
 fmt.Println(g)                windows []  linux  []    //返回的是一個[]int的切片 顯示調用者屬于組的一系列id
 fmt.Println(os.Getpagesize())  windows 4096linux  4096  //windows里邊叫做虛擬內存 linux里邊叫做swap
 fmt.Println(os.Getppid())      windows -1  linux  8621  //調用者的組的進程id
 fmt.Println(os.Getuid())    windows -1  linux  0  //調用者的數字用戶id
(4)os.Chdir()這個函數的原型是func Chdir(dir string) error 輸入字符類型,返回的是錯誤結果,如果改變成功了error=nil

復制代碼 代碼如下:


import (
 "fmt"
 "os"
)

 

func main() {
 fmt.Println(os.Getwd())              //顯示當前的目錄 D:\test <nil>
 fmt.Println(os.Chdir("D:/test/src")) //返回<nil>正確切換目錄了
 fmt.Println(os.Getwd())              //切換后的目錄D:\test\src <nil>
}


(5)os.Stat()這個函數是獲取文件的信息,函數函數的原型func Stat(name string) (fi FileInfo, err error)輸出是文件的名稱返回一個FileInfo的接口和err信息,上一個分析ioutil的時候我們就介紹FileInfo的接口類型了

復制代碼 代碼如下:


type FileInfo interface {
    Name() string       // 文件的名稱
    Size() int64        // 唱過文件的大小
    Mode() FileMode     // 文件的權限
    ModTime() time.Time // 時間
    IsDir() bool        // 是否是目錄
    Sys() interface{}   // 基礎數據源接口(can return nil)
}
import (
 "fmt"
 "os"
)

 

func main() {
 filemode, _ := os.Stat("widuu.go") 
 fmt.Println(filemode.Mode())        //獲取權限 linux 0600
}


(6)os.Chmod()這個函數的原型是func Chmod(name string, mode FileMode) error改變文件的屬性 譬如讀寫,linux上的0755這樣大家可以理解了吧

復制代碼 代碼如下:


import (
 "fmt"
 "os"
)

 

func main() {
 filemode, _ := os.Stat("widuu.go") 
 fmt.Println(filemode.Mode())        //獲取權限 linux 0600
 err := os.Chmod("widuu.go", 0777)   //改變的是文件的權限
 if err!=nil{
  fmt.Println("修改文件權限失敗")
 }
 filemode, _ = os.Stat("widuu.go") 
 fmt.Println(filemode.Mode())        //獲取權限是0777

}


(7)os.Chtime()這個包,函數的原形是func Chtimes(name string, atime time.Time, mtime time.Time) error 輸入string的文件的名稱 訪問時間 創建時間 返回的是error接口信息

復制代碼 代碼如下:


import (
 "fmt"
 "os"
 "time"
)

 

func main() {
 err := os.Chtimes("2.go", time.Now(), time.Now())  //改變時間
 if err != nil {
  fmt.Println(err)
 }
 fi, _ := os.Stat("2.go")
 fmt.Println(fi.ModTime())   //輸出時間 2013-12-29 20:46:23.0005257 +0800 +0800
}


(8)os.Environ()的作用是獲取系統的環境變量,函數原形是func Environ() []string返回是環境變量的[]string切片,說道這個就要和其他的一起說明了,那就是os.ClearEnv()清空環境變量

復制代碼 代碼如下:

func main() {
 data := os.Environ() //輸出之前的環境變量 APPDATA=C:\Users\xiaolvge\AppData\Roaming CLASSPATH=.;D:\java\jdk1.6.0_38…………
 fmt.Println(data)
 os.Clearenv() //清空環境變量
 data = os.Environ()
 fmt.Println(data) //輸出[]string類型的切片[]
}


(9)os.Exit()就是中斷程序返回自定義的int類型的代碼,函數運行是func Exit(code int)輸入一個int的值就可以了

復制代碼 代碼如下:


import (
 "fmt"
 "os"
)

 

func main() {
 func() {
  for {
   fmt.Println("這個是匿名函數")
   os.Exit(1)    //輸出exit status 1中斷操作
  }
 }()
}


(10)函數os.Expand()這個其實就是一個回調函數替換的方法,函數的原形是func Expand(s string, mapping func(string) string) string 輸入的是一個string。對應的是func(string)string的替換字符串的方法,如果沒有字符就替換為空

復制代碼 代碼如下:


import (
 "fmt"
 "os"
)

 

func main() {
 mapping := func(s string) string {
  m := map[string]string{"widuu": "www.ythuaji.com.cn", "xiaowei": "widuu"}
  return m[s]
 }
 data := "hello $xiaowei blog address $widuu"
 fmt.Printf("%s", os.Expand(data, mapping)) //輸出hello widuu blog address www.ythuaji.com.cn}


(11)os.ExpandEnv()把字符串的s替換成環境變量的內容,函數的原形是func ExpandEnv(s string) string,輸入的當然是要替換的字符,輸出的當然還是字符串了

復制代碼 代碼如下:


import (
 "fmt"
 "os"
)

 

func main() {
 data := "GOBIN PATH $GOBIN"
 fmt.Println(os.ExpandEnv(data)) //輸出我本地的環境變量的GOBIN的地址GOBIN PATH C:\Go\bin
}


(12)os.Hostname()這個函數看字面的思意就懂了,是返回主機的HostName(),函數的原形是func Hostname() (name string, err error)返回主機名字和一個error的接口信息

復制代碼 代碼如下:


import (
 "fmt"
 "os"
)

 

func main() {
 data, _ := os.Hostname()
 fmt.Println(data) //我是windows環境下返回我的win的主機名 WIDUU
}

 

延伸 · 閱讀

精彩推薦
  • Golanggolang如何使用struct的tag屬性的詳細介紹

    golang如何使用struct的tag屬性的詳細介紹

    這篇文章主要介紹了golang如何使用struct的tag屬性的詳細介紹,從例子說起,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看...

    Go語言中文網11352020-05-21
  • Golanggo語言制作端口掃描器

    go語言制作端口掃描器

    本文給大家分享的是使用go語言編寫的TCP端口掃描器,可以選擇IP范圍,掃描的端口,以及多線程,有需要的小伙伴可以參考下。 ...

    腳本之家3642020-04-25
  • GolangGolang中Bit數組的實現方式

    Golang中Bit數組的實現方式

    這篇文章主要介紹了Golang中Bit數組的實現方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    天易獨尊11682021-06-09
  • Golanggolang 通過ssh代理連接mysql的操作

    golang 通過ssh代理連接mysql的操作

    這篇文章主要介紹了golang 通過ssh代理連接mysql的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    a165861639710342021-03-08
  • Golanggolang json.Marshal 特殊html字符被轉義的解決方法

    golang json.Marshal 特殊html字符被轉義的解決方法

    今天小編就為大家分享一篇golang json.Marshal 特殊html字符被轉義的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧 ...

    李浩的life12792020-05-27
  • GolangGolang通脈之數據類型詳情

    Golang通脈之數據類型詳情

    這篇文章主要介紹了Golang通脈之數據類型,在編程語言中標識符就是定義的具有某種意義的詞,比如變量名、常量名、函數名等等,Go語言中標識符允許由...

    4272021-11-24
  • Golanggo日志系統logrus顯示文件和行號的操作

    go日志系統logrus顯示文件和行號的操作

    這篇文章主要介紹了go日志系統logrus顯示文件和行號的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧...

    SmallQinYan12302021-02-02
  • Golanggolang的httpserver優雅重啟方法詳解

    golang的httpserver優雅重啟方法詳解

    這篇文章主要給大家介紹了關于golang的httpserver優雅重啟的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,...

    helight2992020-05-14
主站蜘蛛池模板: 双性肉文h | 国产欧美日韩不卡一区二区三区 | 色老板在线视频 | 亚洲六月丁香六月婷婷蜜芽 | 天美影视传媒mv直接看 | 成人夜视频寂寞在线观看 | 皇上好大好硬好涨好深好爽 | 91视频综合网| fulao在线观看的 | 亚洲精品第五页 | 色综色 | 第一次不是你高清在线观看 | 四虎1515hhh co m | 玩50岁四川熟女大白屁股直播 | 日本 视频 在线 | 亚洲一区 在线播放 | 99精品国产久热在线观看66 | 毛片小视频| 亚洲第一综合网站 | 99精品热视频 | 午夜私人影院在线观看 视频 | 热九九精品| 国产caoni555在线观看 | 日本免费一区二区三区四区五六区 | freesex性欧美炮机喷潮 | 亚洲精品成人 | 91制片厂制作传媒破解版免费 | 香蕉久久夜色精品国产小优 | 色呦呦tv| 亚洲区在线播放 | 暖暖日本高清 | 男同激情视频 | 色综合色狠狠天天综合色hd | 精品国产麻豆免费人成网站 | 国产精品成人自拍 | 欧美亚洲高清日韩成人 | 蜜月aⅴ免费一区二区三区 蜜桃影像传媒推广 | 接吻吃胸摸下面啪啪教程 | 98成人 | 亚洲va韩国va欧美va天堂 | 99草视频 |