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

windows.Environ() strings [0] and [1]

我对 "windows.Environ()" 在 Windows pro 7 系统(go 版本 go1.8 windows/amd64)上返回的前 2 个字符串感到困惑。 env[0] 显然有一个键“=::”; env[1] 有一个键“=C:”。谁能指出我在哪里记录?提前致谢。

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])

相关的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 function. The values come from Windows. See the Microsoft Windows documentation of environment variables. Also, see What are these strange =C: environment variables?