型を関数に渡すことにより、型アサーションを実現しようとしています。言い換えれば、私はこのようなことを達成しようとしています:
// Note that this is pseudocode, because Type isn't the valid thing to use here
func myfunction(mystring string, mytype Type) {
...
someInterface := translate(mystring)
object, ok := someInterface.(mytype)
... // Do other stuff
}
func main() {
// What I want the function to be like
myfunction("hello world", map[string]string)
}
myfunction
で型アサーションを正常に実行するために、myfunction
で使用する必要がある適切な関数宣言は何ですか?
@ hlin117、
ねえ、あなたの質問を正しく理解し、タイプを比較する必要があるなら、あなたができることはここにあります:
package main
import (
"fmt"
"reflect"
)
func myfunction(v interface{}, mytype interface{}) bool {
return reflect.TypeOf(v) == reflect.TypeOf(mytype)
}
func main() {
assertNoMatch := myfunction("hello world", map[string]string{})
fmt.Printf("%+v\n", assertNoMatch)
assertMatch := myfunction("hello world", "stringSample")
fmt.Printf("%+v\n", assertMatch)
}
アプローチは、照合するタイプのサンプルを使用することです。