0
例として、インターフェイスの仕事から基になる型の値をゼロにすることはできますか?golangの特定のインターフェイスの基になる型を取得する
func MakeSomething(w Worker){
w.Work()
//can I get a zeor value type of The type underlying w?
//I tried as followed, but failed
copy :=w
v := reflect.ValueOf(©)
fm :=v.Elem()
modified :=reflect.Zero(fm.Type())//fm.type is Worker, and modified comes to be nil
fm.Set(modified)
fmt.Println(copy)
}
type Worker interface {
Work()
}
私の最初の質問、〜心からありがとう、私は違い、 'fmt.Println(reflect.ValueOf(ワット).TYPE())//プリント* main.Testg' ' fmt.Println(reflect.ValueOfを見つけました(&w).Type())// print * main.Worker' 2番目の方法を使用している場合(値wの値を変更できると思います) –
@linvanよろしくお願いします!はい、「&w」は本当に無駄です。それは、値へのポインタを含むインタフェースへのポインタを与えます。そして、Goのインターフェイスへのポインタを扱うことはめったにありません。 – ANisus