范围 [] 字符串 returns uint8
Range []string returns uint8
我有一个 yaml 文件,当前写为:
resource:
File:
containment_path:
- File
- File::Value
Default:
containment_path:
- Default
- Default::Echo
- Default[main]
Exec:
containment_path:
- Stage
- Exec::File
- Exec[File]
我用结构得到containment_path:
type Yaml struct {
ContainmentPath []string `yaml:"containment_path"`
}
我想遍历 ContainmentPath 以获得 containment_path 中的第二个值:File::Value、Default::Echo、Exec::File
我执行此代码:
for _, v := range m.ContainmentPath {
spew.Dump("Value ContainmentPath:", m.ContainmentPath)
spew.Dump("Value v[1]:", v[1])
value = v[1]
}
当我 运行 它时,我得到了 ContainmentPath:
(string) (len=8) "Value ContainmentPath:"
([]string) (len=2 cap=2) {
(string) (len=4) "File",
(string) (len=11) "File::Value"
}
(string) (len=8) "Value ContainmentPath:"
([]string) (len=3 cap=3) {
(string) (len=7) "Default",
(string) (len=13) "Default::Echo",
(string) (len=13) "Default[main]"
}
(string) (len=8) "Value ContainmentPath:"
([]string) (len=3 cap=3) {
(string) (len=5) "Stage",
(string) (len=10) "Exec::File",
(string) (len=10) "Exec[File]"
}
当我 运行 它时,我得到了 v[1]:
(string) (len=11) "Value v[1]:"
(uint8) 114
(string) (len=11) "Value v[1]:"
(uint8) 105
(string) (len=11) "Value v[1]:"
(uint8) 116
我想为 v[1] 获取值:File::Value、Default::Echo、Exec::File
我怎么能在 Go 中做到这一点?
谢谢
您正在索引 string
,而不是 []string
。
ContainmentPath
是一段字符串。
当您 运行 for _, v := range m.ContainmentPath
时,v
正在获取切片中每个字符串的值。所以 v
是类型 string
.
当您打印 v[1]
时,您正在索引字符串(没有先检查它的长度,非常糟糕的主意)并打印字符串中的第二个字符,即一个字节。字节只是 uint8 的别名。
我有一个 yaml 文件,当前写为:
resource:
File:
containment_path:
- File
- File::Value
Default:
containment_path:
- Default
- Default::Echo
- Default[main]
Exec:
containment_path:
- Stage
- Exec::File
- Exec[File]
我用结构得到containment_path:
type Yaml struct {
ContainmentPath []string `yaml:"containment_path"`
}
我想遍历 ContainmentPath 以获得 containment_path 中的第二个值:File::Value、Default::Echo、Exec::File
我执行此代码:
for _, v := range m.ContainmentPath {
spew.Dump("Value ContainmentPath:", m.ContainmentPath)
spew.Dump("Value v[1]:", v[1])
value = v[1]
}
当我 运行 它时,我得到了 ContainmentPath:
(string) (len=8) "Value ContainmentPath:"
([]string) (len=2 cap=2) {
(string) (len=4) "File",
(string) (len=11) "File::Value"
}
(string) (len=8) "Value ContainmentPath:"
([]string) (len=3 cap=3) {
(string) (len=7) "Default",
(string) (len=13) "Default::Echo",
(string) (len=13) "Default[main]"
}
(string) (len=8) "Value ContainmentPath:"
([]string) (len=3 cap=3) {
(string) (len=5) "Stage",
(string) (len=10) "Exec::File",
(string) (len=10) "Exec[File]"
}
当我 运行 它时,我得到了 v[1]:
(string) (len=11) "Value v[1]:"
(uint8) 114
(string) (len=11) "Value v[1]:"
(uint8) 105
(string) (len=11) "Value v[1]:"
(uint8) 116
我想为 v[1] 获取值:File::Value、Default::Echo、Exec::File
我怎么能在 Go 中做到这一点?
谢谢
您正在索引 string
,而不是 []string
。
ContainmentPath
是一段字符串。
当您 运行 for _, v := range m.ContainmentPath
时,v
正在获取切片中每个字符串的值。所以 v
是类型 string
.
当您打印 v[1]
时,您正在索引字符串(没有先检查它的长度,非常糟糕的主意)并打印字符串中的第二个字符,即一个字节。字节只是 uint8 的别名。