我的功能看起来像这样
func GetMessage(id string, by string) error {
// mysql query goes here
}
我的message_id
是字符串,而id
是主键。
我想接受id参数的两种类型。
我试过这样的
if (by == "id") {
int_id, err := strconv.ParseInt(id, 10, 64)
if err != nil {
panic(err)
}
id = int_id
}
但是我收到了像
这样的错误cannot use int_id (type int64) as type string in assignment
有人可以帮助我吗?
由于
答案 0 :(得分:4)
像这样的工作样本使用interface{}
:
package main
import "fmt"
import "errors"
func GetMessage(id interface{}) error {
//fmt.Printf("v:%v\tT: %[1]T \n", id)
switch v := id.(type) {
case string:
fmt.Println("Hello " + v)
case int64:
fmt.Println(v + 101)
default:
//panic("Unknown type: id.")
return errors.New("Unknown type: id.")
}
return nil
}
func main() {
message_id := "World"
id := int64(101)
GetMessage(message_id)
GetMessage(id)
}
输出:
Hello World
202