1
我想用反射來設置一個指針。 elasticbeanstalk.CreateEnvironmentInput
有一個字段SolutionStackName
,它是類型*string
。我收到以下錯誤,當我嘗試設置任何值:如何設置一個struct成員,它是一個指向使用反射的字符串轉到
panic: reflect: call of reflect.Value.SetPointer on ptr Value
這裏是我的代碼:
...
newEnvCnf := new(elasticbeanstalk.CreateEnvironmentInput)
checkConfig2(newEnvCnf, "SolutionStackName", "teststring")
...
func checkConfig2(cnf interface{}, key string, value string) bool {
log.Infof("key %v, value %s", key, value)
v := reflect.ValueOf(cnf).Elem()
fld := v.FieldByName(key)
if fld.IsValid() {
if fld.IsNil() && fld.CanSet() {
fld.SetPointer(unsafe.Pointer(aws.String(value)))
//aws.String returns a pointer
...
這裏是日誌輸出
time="2016-02-20T23:54:52-08:00" level=info msg="key [SolutionStackName], value teststring"
panic: reflect: call of reflect.Value.SetPointer on ptr Value [recovered]
panic: reflect: call of reflect.Value.SetPointer on ptr Value
非常感謝! –