如何通过反射初始化空指针

这是一个非常直接的问题。


你如何在Initialize()下面实现reflect?或者这可能吗?


func Initialize(v interface{}) {

    // ... some reflection code

}


type MyType struct {

    Name string

}


func main() {

    var val *MyType


    // val is nil before initialize

    Initialize(val)

    // val is now &MyType{Name: ""}


    // ...

}

```


MYYA
浏览 148回答 1
1回答

呼唤远方

这是如何做到的:func Initialize(v interface{}) {  rv := reflect.ValueOf(v).Elem()  rv.Set(reflect.New(rv.Type().Elem()))}必须使用指向要设置的值的指针调用此函数:Initialize(&val)游乐场示例如果参数类型不是指向指针的指针,则此答案中的代码会出现恐慌。根据您的使用情况,您可能需要在调用 Elem() 之前检查反射值 类型。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go