[実行]スライスインタフェース及びタイプは、包括的な読み取り-go言語のソースをgocron

// getCommands 
getCommands()[] {cli.Command FUNC 
    :コマンド = cli.Command { 
        名:    " ウェブ" 
        用法:   " 実行Webサーバ" 
        アクション:runWeb、
        フラグ:[] cli.Flag { 
            cli.StringFlag { 
                名称:   " ホスト" 
                値:" 0.0.0.0 " 
                用法:" バインドホスト" 
            }、
            cli.IntFlag { 
                名:  " ポート、P " 
                バリュー:DefaultPort、
                使用法:" バインドポート" 
            }、
            cli.StringFlag { 
                名:   " ENV、E " 
                バリュー:" PROD " 
                用法:" ランタイム環境、DEV |テスト| PROD " 
            }、
        }、
    } 

    戻り[] cli.Command {コマンド} 
}

これら上記のコードは非常に簡単に理解することです、我々は大局的にそれを分割する必要が
ブレースの列が縦に、代入内部のメンバーは、カンマを追加した後ならば、我々は直接、クラスをインスタンス化するとき

    B:= Taoshihan { 
        名:" taoshihan " 
    } 
    FMT .Println(b.Name)

 

インターフェース部材メソッド内部インターフェイスを定義します

タイプフラグインタフェース{ 
    関連項目GetName()文字列
}

 

この方法を有することが起こる別のタイプを定義し、その後、あなたはこのタイプがインタフェースを実装することを考えることができます

入力StringFlag構造体{ 
} 
FUNC(T StringFlag)関連項目GetName()文字列{ 
    リターン" taoshihan " 
}

あなたは変数の型を定義する場合の旗この時、StringFlagも過去に割り当てられます

VARフラグ
A = StringFlag {} 
a.GetName()

 

そして、バックのコードのオリジナルロジックに、これは仕方を理解することは非常に簡単である場合には、次のを使用して

VaRのmyflag []フラグ
myflag = アペンド(myflag、StringFlag {}、StringFlag {})

コマンド: = コマンド{ 
    フラグ:myflag、
}

完全なソースコード:

メインパッケージ

インポート" FMT " 

タイプフラグインターフェース{ 
    関連項目GetName()文字列
} 

コマンド構造体を入力{ 
    フラグ[]フラグ
} 
入力StringFlag構造体{ 
} 

FUNC(T StringFlag)関連項目GetName()文字列{ 
    リターン" taoshihan " 
} 

入力Taoshihan構造体{ ストリング
} 

メインFUNC(){ 
    // VARフラグ
     // A = StringFlag {}
     // a.GetName()
     // B:= taoshihan {
     //      名前: "taoshihan"、
    // }
     // fmt.Println(b.Name)

    VaRのmyflag []フラグ
    myflag = アペンド(myflag、StringFlag {}、StringFlag {})

    コマンド: = コマンド{ 
        フラグ:myflag、
    } 
    のため _、P:= rangeコマンド.Flags {
         FMT .Println(p.GetName())
    } 
}

 

おすすめ

転載: www.cnblogs.com/taoshihan/p/11863563.html