で初期化します。embed typeを初期化する方法と関連するQ&Aを読んでいます。他のpkgのタイプを私の中に埋め込み、リテラルで
このコードをコンパイルするときに私の問題とは何か、私が得た:
[エラー]、未知のフィールド「feature.DefaultSshHelper」タイプのdala02
type FDH feature.DefaultSshHelper
type dala02 struct {
Md5_v string
feature.DefaultSshHelper
//FDH
}
var x_01_h1_p = &dala02{
Md5_v: "",
feature.DefaultSshHelper: feature.DefaultSshHelper{
//FDH: FDH{
// blabla
},
}
// use it by a interface []feature.CmdFioHelper{x_00_h1_p}
の構造体リテラルの最初の時点では、私はそれを考えましたエクスポートされた問題だったので、私はこの行の 'FDH型のタイプ.DefaultSshHelper'を追加しました。今、私たちは、このエラーを持っている:
[エラー]は、配列またはスライスリテラルに型feature.CmdFioHelperとしてx_01_h1_p(タイプ* dala02)を使用することはできません: * dala02はfeature.CmdFioHelper(行方不明Getnextchecker法)
を実装していません。しかし、feature.DefaultSshHelperのポインタはfeature.CmdFioHelper(インタフェース)を実装しています。したがって、dala02のポインタもそれを実装する必要があります。
埋め込みがサブクラス化と異なる重要な方法があります。型を埋め込むとき、その型のメソッドは外部型のメソッドになりますが、呼び出されるときにはメソッドの受信側が内側の型であり外側の型ではありません。
質問このコンパイルエラーをどのように修正するのですか。どの行が間違っていますか?私はgolangの専門家ではありません、あなたの助言のおかげで:)。ところで私はいくつかの回避策を見つける。
あなたの答えをありがとう。 –