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

來源:互聯網
上載者:User

(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.jb51.net", "xiaowei": "widuu"}
  return m[s]
 }
 data := "hello $xiaowei blog address $widuu"
 fmt.Printf("%s", os.Expand(data, mapping)) //輸出hello widuu blog address www.jb51.net}


(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
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.