在Golang中,是否可以将指针参数的值更改为其他值?
例如,
func main() {
i := 1
test(&i)
}
func test(ptr interface{}) {
v := reflect.ValueOf(ptr)
fmt.Println(v.CanSet()) // false
v.SetInt(2) // panic
}
Run Code Online (Sandbox Code Playgroud)
https://play.golang.org/p/3OwGYrb-W-
是否可以test()更改i为指向另一个值2?
不确定这是否是您要查找的内容,但是可以将指针的值更改为其他值。下面的代码将打印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
}
Run Code Online (Sandbox Code Playgroud)