Go語言中os包中常用函數(shù)初步歸納的示例分析,相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。
創(chuàng)新互聯(lián):于2013年成立為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設(shè)”服務(wù),為數(shù)千家公司企業(yè)提供了專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)頁設(shè)計和網(wǎng)站推廣服務(wù), 定制制作由設(shè)計師親自精心設(shè)計,設(shè)計的效果完全按照客戶的要求,并適當(dāng)?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實際情況給出合理的網(wǎng)站構(gòu)架,制作客戶同行業(yè)具有領(lǐng)先地位的。(1)os.Getwd函數(shù)原型是func Getwd() (pwd string, err error) 返回的是路徑的字符串和一個err信息,為什么先開這個呢?因為我看os的包的時候第一個是Chkdir這個包,但是你不知道當(dāng)前目錄怎么知道改變目錄了呢?所以先說Getwd() 函數(shù)demo
復(fù)制代碼 代碼如下:
import (
"fmt"
"os"
)
func main() {
dir, _ := os.Getwd()
fmt.Println("當(dāng)前的目錄是:", dir) //當(dāng)前的目錄是: D:\test 我的環(huán)境是windows 如果linix 就是/xxx/xxx
}
(2)既然說了Getwd()了,我們就把os里邊的Get全部都說了吧!os.Getenv()獲取系統(tǒng)的環(huán)境變量,函數(shù)原型是func Getenv(key string) string輸入的是一個string的環(huán)境變量名稱,返回的是值
復(fù)制代碼 代碼如下:
import (
"fmt"
"os"
)
func main() {
path := os.Getenv("GOPATH")
fmt.Println("環(huán)境變量GOPATH的值是:", path) //windows下 環(huán)境變量PATH的值是: D:\test;C:\Go\bin; linux 環(huán)境變量GOPATH的值是: /data/goweb
}
(3)下邊的get信息 如果沒有:=的就是返回的都是int一般很少用到的 我就給注釋了做什么的?然后windows和linux結(jié)果是什么?
fmt.Println(os.Getegid()) windows -1 linux 0 //調(diào)用者的group的id
fmt.Println(os.Geteuid()) windows -1 linux 0 //用戶的uid
fmt.Println(os.Getgid()) windows -1 linux 0 //調(diào)用者的gid的id
g, _ := os.Getgroups()
fmt.Println(g) windows [] linux [] //返回的是一個[]int的切片 顯示調(diào)用者屬于組的一系列id
fmt.Println(os.Getpagesize()) windows 4096linux 4096 //windows里邊叫做虛擬內(nèi)存 linux里邊叫做swap
fmt.Println(os.Getppid()) windows -1 linux 8621 //調(diào)用者的組的進(jìn)程id
fmt.Println(os.Getuid()) windows -1 linux 0 //調(diào)用者的數(shù)字用戶id
(4)os.Chdir()這個函數(shù)的原型是func Chdir(dir string) error 輸入字符類型,返回的是錯誤結(jié)果,如果改變成功了error=nil
復(fù)制代碼 代碼如下:
import (
"fmt"
"os"
)
func main() {
fmt.Println(os.Getwd()) //顯示當(dāng)前的目錄 D:\test
fmt.Println(os.Chdir("D:/test/src")) //返回
fmt.Println(os.Getwd()) //切換后的目錄D:\test\src
}
(5)os.Stat()這個函數(shù)是獲取文件的信息,函數(shù)函數(shù)的原型func Stat(name string) (fi FileInfo, err error)輸出是文件的名稱返回一個FileInfo的接口和err信息,上一個分析ioutil的時候我們就介紹FileInfo的接口類型了
復(fù)制代碼 代碼如下:
type FileInfo interface {
Name() string // 文件的名稱
Size() int64 // 唱過文件的大小
Mode() FileMode // 文件的權(quán)限
ModTime() time.Time // 時間
IsDir() bool // 是否是目錄
Sys() interface{} // 基礎(chǔ)數(shù)據(jù)源接口(can return nil)
}
import (
"fmt"
"os"
)
func main() {
filemode, _ := os.Stat("widuu.go")
fmt.Println(filemode.Mode()) //獲取權(quán)限 linux 0600
}
(6)os.Chmod()這個函數(shù)的原型是func Chmod(name string, mode FileMode) error改變文件的屬性 譬如讀寫,linux上的0755這樣大家可以理解了吧
復(fù)制代碼 代碼如下:
import (
"fmt"
"os"
)
func main() {
filemode, _ := os.Stat("widuu.go")
fmt.Println(filemode.Mode()) //獲取權(quán)限 linux 0600
err := os.Chmod("widuu.go", 0777) //改變的是文件的權(quán)限
if err!=nil{
fmt.Println("修改文件權(quán)限失敗")
}
filemode, _ = os.Stat("widuu.go")
fmt.Println(filemode.Mode()) //獲取權(quán)限是0777
}
(7)os.Chtime()這個包,函數(shù)的原形是func Chtimes(name string, atime time.Time, mtime time.Time) error 輸入string的文件的名稱 訪問時間 創(chuàng)建時間 返回的是error接口信息
復(fù)制代碼 代碼如下:
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()的作用是獲取系統(tǒng)的環(huán)境變量,函數(shù)原形是func Environ() []string返回是環(huán)境變量的[]string切片,說道這個就要和其他的一起說明了,那就是os.ClearEnv()清空環(huán)境變量
復(fù)制代碼 代碼如下:
func main() {
data := os.Environ() //輸出之前的環(huán)境變量 APPDATA=C:\Users\xiaolvge\AppData\Roaming CLASSPATH=.;D:\java\jdk1.6.0_38…………
fmt.Println(data)
os.Clearenv() //清空環(huán)境變量
data = os.Environ()
fmt.Println(data) //輸出[]string類型的切片[]
}
(9)os.Exit()就是中斷程序返回自定義的int類型的代碼,函數(shù)運行是func Exit(code int)輸入一個int的值就可以了
復(fù)制代碼 代碼如下:
import (
"fmt"
"os"
)
func main() {
func() {
for {
fmt.Println("這個是匿名函數(shù)")
os.Exit(1) //輸出exit status 1中斷操作
}
}()
}
(10)函數(shù)os.Expand()這個其實就是一個回調(diào)函數(shù)替換的方法,函數(shù)的原形是func Expand(s string, mapping func(string) string) string 輸入的是一個string。對應(yīng)的是func(string)string的替換字符串的方法,如果沒有字符就替換為空
復(fù)制代碼 代碼如下:
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替換成環(huán)境變量的內(nèi)容,函數(shù)的原形是func ExpandEnv(s string) string,輸入的當(dāng)然是要替換的字符,輸出的當(dāng)然還是字符串了
復(fù)制代碼 代碼如下:
import (
"fmt"
"os"
)
func main() {
data := "GOBIN PATH $GOBIN"
fmt.Println(os.ExpandEnv(data)) //輸出我本地的環(huán)境變量的GOBIN的地址GOBIN PATH C:\Go\bin
}
(12)os.Hostname()這個函數(shù)看字面的思意就懂了,是返回主機(jī)的HostName(),函數(shù)的原形是func Hostname() (name string, err error)返回主機(jī)名字和一個error的接口信息
復(fù)制代碼 代碼如下:
import (
"fmt"
"os"
)
func main() {
data, _ := os.Hostname()
fmt.Println(data) //我是windows環(huán)境下返回我的win的主機(jī)名 WIDUU
}
看完上述內(nèi)容,你們掌握Go語言中os包中常用函數(shù)初步歸納的示例分析的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計公司行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。