猿问

反映零不等于零

我需要检测的是某些struct字段的值是否为空。

在这个问题中,我找到了解决方案,但是当我在游乐场操作员上尝试使用它时==,funcreflect.DeepEqual总是返回false。

我在做什么错,我该如何解决?


简单的例子:


func main() {

    s := ""

    v := reflect.ValueOf(s)

    t := reflect.TypeOf(s)


    zero := reflect.Zero(t)


    fmt.Println(zero == reflect.Zero(t)) // false

    fmt.Println(v == zero) // false 

    fmt.Println(v == reflect.Zero(t)) // false

}

我的情况:


type S struct {

    Empty string

    NotEmpty string

}


func main() {

    s := S{

        Empty: "",

        NotEmpty: "Some text",

    }



    v := reflect.ValueOf(s)

    for i := 0; i < v.NumField(); i++ {

        field := v.Field(i)


        fmt.Println(field, field == reflect.Zero(field.Type()))

    }

}

输出:


 false

Some text false


哆啦的时光机
浏览 215回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答