私のスキャンは宛先変数を更新していません。私はそれを次のように動作させました:
ValueName := reflect.New(reflect.ValueOf(value).Elem().Type())
しかし、私はそれが私が望むように機能しているとは思わない.
func (self LightweightQuery) Execute(incrementedValue interface{}) {
existingObj := reflect.New(reflect.ValueOf(incrementedValue).Elem().Type())
if session, err := connection.GetRandomSession(); err != nil {
panic(err)
} else {
// buildSelect just generates a select query, I have test the query and it comes back with results.
query := session.Query(self.buildSelect(incrementedValue))
bindQuery := cqlr.BindQuery(query)
logger.Error("Existing obj ", existingObj)
for bindQuery.Scan(&existingObj) {
logger.Error("Existing obj ", existingObj)
....
}
}
}
両方のログ メッセージはまったく同じExisting obj &{ 0 0 0 0 0 0 0 0 0 0 0 0}
です (スペースは文字列フィールドです)。これは、新しいオブジェクトを生成するためにリフレクションを頻繁に使用するためですか? 彼らのドキュメントではvar ValueName type
、目的地を定義するために使用する必要があると書かれていますが、リフレクションではそれを行うことができないようです。これはばかげているかもしれませんが、これをさらにデバッグする方向に私を向けるだけでも素晴らしいでしょう。私の囲碁のスキルはかなり不足しています!