"は宣言され使用されていません"私は理解できません - 何か「本当に私はそれを使用しました」と何かタグを付ける必要がありますか?go:varは宣言されていますが使用されていないエラー - 回避するには?
func getInt(data map[string]interface{}, name string) (int, error) {
t := data[name]
if reflect.TypeOf(t).Kind() == reflect.Int {
return t.(int), nil
}
return 0, &apiError{1, "it's not an int"}
}
また、単一の関数にこれらを考慮する正しい方法上の任意の考えは歓迎されるだろう:奇妙なことに、私は、この関数からエラーを得ることはありません
func getString(data map[string]interface{}, name string) (string, error) {
s := data[name]
if reflect.TypeOf(s).Kind() != reflect.String {
return s.(string), nil
}
return "", &apiError{1, "it's not a string"}
}
!これは、コンパイルしgolang.org
上の細かい動作しますので、あなたのエラーは別の場所で同じ識別子を使用して(宣言していない)から来ている
エラーを再現できません。あなたはそれを引き起こすことのほかに何もないと確信していますか? https://play.golang.org/p/OpqqN7cBFZ – ale64bit
「これらを単一の機能に含める」とはどういう意味ですか? 'getString'はマップから文字列を読み込んで返します。 'getInt'は、マップからintを読み込んで返します。 Goでは、これらは非常に異なる動作です。 –
あなたのコードのどこかに別の "s"があり、あなたを混乱させるかもしれませんか? (ヒント:よりわかりやすい名前を使用してください)。 –