1 Star 0 Fork 0

Burning/gopackage

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
getenv.go 1.54 KB
一键复制 编辑 原始数据 按行查看 历史
Burning 提交于 2024-11-17 10:18 +08:00 . 优化更新
package gutils
import (
"fmt"
"os"
"strconv"
)
// GetEnv 获取环境变量的值,如果未设置则返回默认值,支持任意类型
func GetEnv(key string, defaultValue ...any) any {
// 获取环境变量值
if value, exists := os.LookupEnv(key); exists {
if len(defaultValue) > 0 {
// 如果传递了默认值,进行类型转换
return convertToType(value, defaultValue[0])
}
return value // 如果没有传递默认值,则直接返回环境变量值
}
// 如果未设置环境变量并且传递了默认值,返回默认值
if len(defaultValue) > 0 {
return defaultValue[0]
}
// 如果未设置环境变量且未传递默认值,返回空值或 nil
return nil
}
// convertToType 根据默认值的类型转换环境变量值
func convertToType(value string, defaultValue any) any {
switch defaultValue.(type) {
case int:
// 转换为 int 类型
if intValue, err := strconv.Atoi(value); err == nil {
return intValue
}
case bool:
// 转换为 bool 类型
if boolValue, err := strconv.ParseBool(value); err == nil {
return boolValue
}
case float64:
// 转换为 float64 类型
if floatValue, err := strconv.ParseFloat(value, 64); err == nil {
return floatValue
}
// 如果是其他类型,可以添加更多的 case
}
// 默认返回字符串类型
return value
}
func main() {
// 示例用法
key := "MY_ENV_VAR"
defaultValue := []int{1, 2, 3} // 默认值可以是任意类型
// 获取环境变量
value := GetEnv(key, defaultValue)
fmt.Printf("The value of %s is: %v\n", key, value)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/jie_python/gopackage.git
git@gitee.com:jie_python/gopackage.git
jie_python
gopackage
gopackage
v1.0.110

搜索帮助