2017-05-12 14 views

答えて

1

これがあなたが探していたものかどうかわからない場合は、 ですが、ポインタの値を別のものに変更できます。 code belowは2と3を出力します:

package main 

import (
    "fmt" 
) 

func main() { 
    i := 1 

    testAsAny(&i) 
    fmt.Println(i) 

    testAsInt(&i) 
    fmt.Println(i) 
} 

func testAsAny(ptr interface{}) { 
    *ptr.(*int) = 2 
} 

func testAsInt(i *int) { 
    *i = 3 
} 
2

ここ反映パッケージを使用して値を設定することになりましたです。キーポイントは、ポインタ自体ではなく、ポインタの要素を設定することです。

func test(ptr interface{}) { 
    v := reflect.ValueOf(ptr).Elem() 
    v.SetInt(2) 
} 

playground example

別の答えに示すように反映されたパッケージは、この特定の例には必要とされないことに注意してください。

+0

これも機能します!私は反射の法則を読むべきだと思います。 –

関連する問題