windows.Environ()字符串[0]和[1]

时间:2017-04-03 00:08:36

标签: windows go environment-variables standard-library

我对" windows.Environ()"返回的前2个字符串感到困惑。在Windows专业版7系统上(go go.8.8 windows / amd64)。 env [0]显然有一个键#34; = ::&#34 ;; env [1]有一个键" = C:"。有人能指出我记录的地方吗? Thx提前。

str_EnvStrs := windows.Environ()
// 
//    str_EnvStrs[0] == '=::=::\'
fmt.Printf("str_EnvStrs[0] == '%v'\n",str_EnvStrs[0])
//
//    str_EnvStrs[1] == '=C:=C:\Users\(WINLOGIN)\Documents\Source\go\src 
//                       \github.com\(GITLOGIN)\maps_arrays_slices'
fmt.Printf("str_EnvStrs[1] == '%v'\n",str_EnvStrs[1])

1 个答案:

答案 0 :(得分:2)

相关的Go代码是:

func Environ() []string {
    s, e := GetEnvironmentStrings()
    if e != nil {
        return nil
    }
    defer FreeEnvironmentStrings(s)
    r := make([]string, 0, 50) // Empty with room to grow.
    for from, i, p := 0, 0, (*[1 << 24]uint16)(unsafe.Pointer(s)); true; i++ {
        if p[i] == 0 {
            // empty string marks the end
            if i <= from {
                break
            }
            r = append(r, string(utf16.Decode(p[from:i])))
            from = i + 1
        }
    }
    return r
}

代码正在使用Windows GetEnvironmentStrings功能。值来自Windows。请参阅环境变量的Microsoft Windows文档。另请参阅What are these strange =C: environment variables?