Golang os包下常用的系统相关操作

环境变量相关

1. Getenv函数

func Getenv(key string) string 

功能:获取系统key的环境变量,如果没有环境变量就返回空

 

示例:

func main() {
    gopath := os.Getenv("GOPATH")
    fmt.Println(gopath)
}

 

2. Setenv函数

func Setenv(key, value string) error          

功能:设定环境变量,经常与Getenv连用,用来设定环境变量的值

func main() {
       err := os.Setenv("GOOS","linux")
       if err != nil {
              log.Fatal("Setenv error ",err)
       }
       fmt.Println("GOOS",os.Getenv("GOOS"))
}

 

3. Expand函数

func Expand(s string, mapping func(string) string) string  

功能:Expand用mapping 函数指定的规则替换字符串中的${var}或者$var(注:变量之前必须有$符号)。比如,os.ExpandEnv(s)等效于os.Expand(s, os.Getenv)。

 

4. ExpandEnv函数

func ExpandEnv(s string) string 

功能:ExpandEnv根据当前环境变量的值来替换字符串中的${var}或者$var。如果引用变量没有定义,则用空字符串替换。

func main() {
       s := "hello $GOROOT"
       fmt.Println(os.ExpandEnv(s)) // hello /home/work/software/go,$GOROOT替换为环境变量的值,而h没有环境变量可以替换,返回空字符串
}

 

5. Environ函数

func Environ() []string 

功能:返回所有环境变量

 

6. Clearenv函数

func Clearenv()   

功能:清除所有环境变量(慎用)
 

### 使用 Golangos 创建目录 在 Golang 中,`os` 提供了丰富的功能来与操作系统进行交互,其中括创建目录的操作。通过 `os.Mkdir` 或 `os.MkdirAll` 函数可以轻松实现目录的创建。以下是对这两个函数的详细说明和示例代码。 #### 1. `os.Mkdir` 函数 `os.Mkdir` 用于创建单级目录。如果需要创建多级目录,则需要调用多次 `os.Mkdir` 或使用 `os.MkdirAll`。函数签名如下: ```go func Mkdir(name string, perm FileMode) error ``` - `name`:要创建的目录路径。 - `perm`:新目录的权限模式(例如 `0755` 表示所有者可读写执行,组和其他用户可读执行)。 #### 示例代码 以下是一个使用 `os.Mkdir` 创建单级目录的示例[^4]: ```go package main import ( "log" "os" ) func main() { err := os.Mkdir("newdir", 0755) if err != nil { log.Fatal(err) } log.Println("Directory created successfully.") } ``` #### 2. `os.MkdirAll` 函数 `os.MkdirAll` 用于递归地创建多级目录。即使父目录不存在,也会一并创建。函数签名如下: ```go func MkdirAll(path string, perm FileMode) error ``` - `path`:要创建的完整目录路径。 - `perm`:新目录的权限模式。 #### 示例代码 以下是一个使用 `os.MkdirAll` 创建多级目录的示例[^2]: ```go package main import ( "log" "os" ) func main() { err := os.MkdirAll("newdir/subdir", 0755) if err != nil { log.Fatal(err) } log.Println("Directory created successfully.") } ``` #### 注意事项 - 在创建目录时,确保当前程序有足够的权限执行该操作。可以通过 `os.Chmod` 修改权限或在运行时确保权限充足。 - 权限模式通常以八进制表示,例如 `0644` 表示文件权限为所有者可读写,组和其他用户只可读;`0755` 表示所有者可读写执行,组和其他用户可读执行。 #### 错误处理 如果目录已经存在,`os.Mkdir` 和 `os.MkdirAll` 都会返回一个错误。可以通过检查错误类型来判断具体原因。例如: ```go if err != nil { if os.IsExist(err) { log.Println("Directory already exists.") } else { log.Fatal(err) } } ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值