如何 return 来自函数的动态值

How to return dynamic values from a function

如何实现这样的功能? <What_to_use_here> ?

func callfunc(type string) <What_to_use_here> {
    if type == "string"{
        return "I am a string"
     } else if type == "integer"{
       return 1
     }
    return nil
}

type Sample struct {
   value_int int
   value_str string
}

type Sample s
s.value_int = callFunc("integer")
s.value_str = callFunc("string")

我需要将来自 callFunc 的值分配给指定的类型,如图所示。所以我认为返回接口是行不通的。需要帮助。

type Sample struct {
    value_int int
    value_str string
}

func callFunc(typ string) interface{} {
    if typ == "string" {
        return "I am a string"
    } else if typ == "integer" {
        return 1
    }
    return nil
}

func main() {
    var s Sample
    s.value_int = callFunc("integer").(int)
    s.value_str = callFunc("string").(string)
    fmt.Println(s)
}

https://play.golang.org/p/QEPVMvAhkMQ

您可以使用来自 go lang 函数的 interface 到 return 动态值,这里是相同的简单程序:

package main

import (
    "fmt"
)

func main() {
    data := callfunc("string")
    fmt.Println(data)
    data2 := callfunc("integer")
    fmt.Println(data2)
}

func callfunc(str string) interface{} {
    if str == "string" {
        return "I am a string"
    } else if str == "integer" {
        return 1
    }
    return nil
}

输出:

I am a string
1