我有一个结构,其中包含field []interface{}
形式的字段。如果我打印字段,我会返回一个指针引用。如果我尝试取消引用该字段,我会收到错误“invalid indirect”。
代码如下:
type MyType struct {
field []interface{}
}
myType := //create a MyType. Field is just an array of numbers
println(myType.field) // prints a pointer reference, ex: [1/1]0xc420269aa0
println(*(myType.field)) // doesn't compile
如何在myType.field
?
答案 0 :(得分:1)
答案是遍历数组,甚至更好,使用fmt.Println
。
func dump(items []interface{}) {
for i := 0; i < len(items); i++ {
fmt.Println(items[i])
}
}
// OR
fmt.Println(items)
答案 1 :(得分:0)
数组接口可以如下打印
{{ url_for('static', filename='styles/style.css') }}
这是结果
questionSet := []interface{}{}
// ... code to fillup the question set
fmt.Printf("%t", questionSet)
这里的输出不是很漂亮,但是至少您可以看到结果并提取相关信息以进行进一步处理。
在以上结果中,[%!t(*domain.Question=&{First Economics question 3
[{Economics option 1 for student false}
{Economics option 2 for student false}
{Economics option 3 for student true}
{Economics option 4 for student false}]
[{Economics first topic} {Economics second topic}]})
%!t(*domain.Question=&{second Question 4
[{Qs2 Option 1 for student false}
{Qs2 Option 2 for student false}
{Qs2 Option 3 for student false}
{Qs2 Option 4 for student false}]
[{third topic} {fourth topic}]})]
是一个结构,这里是完整的结构供您参考。希望这可以帮助您更好地理解。
domain.Question
请考虑动词type Question struct {
Questions string `json:"questions,omitempty" bson:"questions"`
Marks string `json:"marks,omitempty" bson:"marks"`
Options []QuestionOptions `json:"options,omitempty" bson:"options"`
Topics []QuestionTopic `json:"topics,omitempty" bson:"topics"`
}
type QuestionOptions struct {
Option string `json:"option" bson:"option"`
Correct bool `json:"correct" bson:"correct"`
}
type QuestionTopic struct {
Topic string `json:"topic" bson:"topic"`
}
旨在打印布尔值(请参见https://golang.org/pkg/fmt/的文档概述),因此,当使用动词转储值的内容时,它已经可以使用了。而不是围棋作者的预期行为,因此,这种行为将来可能会改变。
和平
答案 2 :(得分:0)
您可以使用的另一种方式
https://play.golang.org/p/4lLQ4Gb2S0m
package main
import (
"encoding/json"
"fmt"
)
func main() {
fmt.Println(dump(new(bool)))
fmt.Println(dump([]interface{}{new(bool), new(string)}))
}
func dump(x interface{}) string {
json, err := json.MarshalIndent(x, "", " ")
if err != nil {
panic(err)
}
return string(json)
}
// Outputs:
// false
// [
// false,
// ""
// ]