Golang方法参数接口{}

时间:2016-08-13 06:20:39

标签: methods go interface

代码:

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?

1 个答案:

答案 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