代码拉取完成,页面将自动刷新
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)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。