代码:
type String struct {
Result string
}
func main() {
result := &String{Result:"value"}
//var test string= "value"
//result := &test
testDataBase(result)
fmt.Print(result.Result) //expect:"34",but:"value"
}
func testDataBase(str interface{}) {
strV,ok := str.(String)
if ok {
strV.Result="34"
}
}
那么,我怎样才能得到结果:34?
答案 0 :(得分:1)
使用strV, ok := str.(*String)
,
像这个工作示例代码:
package main
import "fmt"
type String struct{ Result string }
func main() {
result := &String{Result: "value"}
testDataBase(result)
fmt.Println(result.Result)
}
func testDataBase(str interface{}) {
strV, ok := str.(*String)
if !ok {
panic("error")
}
strV.Result = "34"
}
输出:
34