[解決済み] 匿名インターフェイスを埋め込んだ構造体の意味?
2023-01-09 13:14:30
質問
sort
パッケージを使用します。
type Interface interface {
Len() int
Less(i, j int) bool
Swap(i, j int)
}
...
type reverse struct {
Interface
}
匿名インターフェースの意味
Interface
構造体の中の
reverse
?
どのように解決するのですか?
このようにリバースは
sort.Interface
を実装しており、特定のメソッドをオーバーライドすることができます。
をオーバーライドすることができます。
type reverse struct {
// This embedded Interface permits Reverse to use the methods of
// another Interface implementation.
Interface
}
ここで、どのように入れ替わるかに注目してください。
(j,i)
の代わりに
(i,j)
であり、またこれは構造体である
reverse
であっても
reverse
インプリメント
sort.Interface
// Less returns the opposite of the embedded implementation's Less method.
func (r reverse) Less(i, j int) bool {
return r.Interface.Less(j, i)
}
このメソッドの内部で渡された構造体が何であれ、それを新しい
reverse
構造体に変換します。
// Reverse returns the reverse order for data.
func Reverse(data Interface) Interface {
return &reverse{data}
}
このやり方ができなかったら、どうすればいいかと考えたときに、真価が発揮されるのです。
-
別のものを追加する
Reverse
メソッドをsort.Interface
? - 別のReverseInterfaceを作成しますか?
- ... ?
このいずれの変更も、標準のリバース機能を使用したい何千ものパッケージにわたって、さらに多くの多くのコード行を必要とするでしょう。
関連
-
[解決済み] Golang 構造体へのキャストインターフェイス
-
[解決済み] 構造体変数をコンソールに表示するには?
-
[解決済み】Goのコンストラクタ
-
[解決済み] サーバーでSSLが有効になっていない
-
[解決済み] reflectを使用して、構造体フィールドの値を設定するにはどうすればよいですか?
-
[解決済み] Goでスライスを逆に反復処理する方法はありますか?
-
[解決済み] Goで空の構造体をJSONにマーシャルしない方法とは?
-
[解決済み] スライスを変数入力として渡すには?
-
[解決済み] ユーザーのホームディレクトリを取得する
-
[解決済み] 空のスライスをチェックするにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン