golang講解(go語言)標準庫分析之os(1)

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

Golang標準庫


今天我們分析的是golang的os包,為什麼今天不分析IO包而分析OS包了呢?看一下代碼 io.WriteString(w Writer, s string)其中Writer是目標寫入器,然後我們會發現 func (f *File) WriteString(s string) (ret int, err error)這個,所以我這裡給大家講下OS包的分析!(不包括子包)

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

func main() {
dir, _ := os.Getwd()
fmt.Println("當前的目錄是:", dir) //當前的目錄是: D:\test 我的環境是windows 如果linix 就是/xxx/xxx
}
[/php]
(2)既然說了Getwd()了,我們就把os裡邊的Get全部都說了吧!os.Getenv()擷取系統的環境變數,函數原型是func Getenv(key string) string輸入的是一個string的環境變數名稱,返回的是值
[php]
import (
"fmt"
"os"
)

func main() {
path := os.Getenv("GOPATH")
fmt.Println("環境變數GOPATH的值是:", path) //windows下 環境變數PATH的值是: D:\test;C:\Go\bin; linux 環境變數GOPATH的值是: /data/goweb
}
[/php]
(3)下邊的get資訊 如果沒有:=的就是返回的都是int一般很少用到的 我就給注釋了做什麼的?然後windows和linux結果是什嗎?
[php]
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>
}
[/php]
(5)os.Stat()這個函數是擷取檔案的資訊,函數函數的原型func Stat(name string) (fi FileInfo, err error)輸出是檔案的名稱返回一個FileInfo的介面和err資訊,上一個分析ioutil的時候我們就介紹FileInfo的介面類型了
[php]
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
}
[/php]
(6)os.Chmod()這個函數的原型是func Chmod(name string, mode FileMode) error改變檔案的屬性 譬如讀寫,linux上的0755這樣大家可以理解了吧
[php]
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

}
[/php]
今天就分析到這裡我們明天繼續分析OS包,本文首發在微度網路-網路技術中心http://www.widuu.com/archives/12/908.html 然後發布在我的Golang語言部落格http://www.lingphp.com 轉寄請註明出處~~謝謝~~

未經允許,不得轉載本站任何文章:微度網路 » golang講解(go語言)標準庫分析之os(1)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.