我需要类似的输出
0 - os.O_APPEND - 1024
1 - os.O_CREATE - 64
2 - os.O_EXCL - 128
3 - os.O_RDONLY - 0
4 - os.O_RDWR - 2
5 - os.O_SYNC - 1052672
6 - os.O_TRUNC - 512
7 - os.O_WRONLY - 1
我可以用
完成一半func main() {
a := []int{os.O_APPEND,os.O_CREATE,os.O_EXCL,os.O_RDONLY,os.O_RDWR,os.O_SYNC,os.O_TRUNC,os.O_WRONLY}
for index, value := range a {
fmt.Printf("%d - - %d\n", index, value)
}
}
这给了我输出
0 - - 1024
1 - - 64
2 - - 128
3 - - 0
4 - - 2
5 - - 1052672
6 - - 512
7 - - 1
,另一半与
func main() {
a := []string{"os.O_APPEND","os.O_CREATE","os.O_EXCL","os.O_RDONLY","os.O_RDWR","os.O_SYNC","os.O_TRUNC","os.O_WRONLY"}
for index, value := range a {
fmt.Printf("%d - %-15s -\n", index, value)
}
}
这给了我输出
0 - os.O_APPEND -
1 - os.O_CREATE -
2 - os.O_EXCL -
3 - os.O_RDONLY -
4 - os.O_RDWR -
5 - os.O_SYNC -
6 - os.O_TRUNC -
7 - os.O_WRONLY -
如何获得所需的输出?
更新
在考虑这个问题时,我得到了一个解决方案:使用一个空接口数组解决该问题,然后在该空接口数组的每个元素上键入断言,一次使用string获取该字符串,一次用int来获取int的值,但是我不知道该怎么做。
答案 0 :(得分:2)
您可以使用地图。
func main() {
var m map[string]int
m = make(map[string]int)
b := []int{os.O_APPEND,os.O_CREATE,os.O_EXCL,os.O_RDONLY,os.O_RDWR,os.O_SYNC,os.O_TRUNC,os.O_WRONLY}
a := []string{"os.O_APPEND","os.O_CREATE","os.O_EXCL","os.O_RDONLY","os.O_RDWR","os.O_SYNC","os.O_TRUNC","os.O_WRONLY"}
for index, value := range a {
m[value] = b[index]
}
var i =0
for index,mapValue := range m{
fmt.Println(i," - ",index,"-",mapValue )
i++
}
}
输出将是:
0 - os.O_RDWR - 2
1 - os.O_SYNC - 1052672
2 - os.O_TRUNC - 512
3 - os.O_WRONLY - 1
4 - os.O_APPEND - 1024
5 - os.O_CREATE - 64
6 - os.O_EXCL - 128
7 - os.O_RDONLY - 0
或者您可以定义自定义结构
type CustomClass struct {
StringValue string
IntValue int
}
func main() {
CustomArray:=[]CustomClass{
{"os.O_APPEND",os.O_APPEND},
{"os.O_CREATE",os.O_CREATE},
{"os.O_EXCL",os.O_EXCL},
{"os.O_RDONLY",os.O_RDONLY},
{"os.O_RDWR",os.O_RDWR},
{"os.O_SYNC",os.O_SYNC},
{"os.O_TRUNC",os.O_TRUNC},
{"os.O_WRONLY",os.O_WRONLY},
}
for k, v := range CustomArray {
fmt.Println(k," - ", v.StringValue," - ", v.IntValue)
}
}