我创建了一个简单的代码
package main
import (
"fmt"
)
func main() {
a := 5
b := &a
Test(b)
fmt.Println(a)
fmt.Println(*b)
}
func Test(result interface{}){
switch r := result.(type) {
case *int:
*r = 10
}
}
您可以运行here
在switch语句里面的Test方法中,我创建了一个新变量,它是我的参数类型。 为什么我的变量' b'更新此指针后更新。为什么这个新变量指向旧变量?
程序执行的结果是
10
10
但预计
5
5
更新
我想确切地提出这个问题。我没有将指针分配给' b'变量' r'在测试中。 我希望
r := result.(type)
给出了结果的类型。但是,为什么我改变新变量结果的指针值也会改变
更新2
根据建议,我再次检查了一个规格,但没有找到答案。在下一个建筑
switch r := result.(type) {
case *int:
*r = 10
}
result.(type)
完全返回什么?
类型开关比较类型而不是值。否则它是相似的>到一个表达式开关。它由特殊的开关表达式标记,>具有使用保留字类型而不是>的类型断言的形式实际类型:
切换x。(类型){ //案例 }