我对" 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])
答案 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?