Goの関数とメソッドの違いは何ですか?
2023-08-30 10:21:51
質問
Goを始めようとしているのですが、その際に ドキュメント は非常に優れています。私がドキュメントで見つけられなかったのは、関数とメソッドの違いです。
私が理解している限りでは、関数は "global" で、つまり、関数を使うためにパッケージをインポートする必要はなく、常にそこにあります。メソッドはパッケージにバインドされています。これは正しいですか?
どのように解決するのですか?
<ブロッククオート私が理解している限りでは、関数はグローバルで、関数を使用するためにパッケージをインポートする必要はなく、常に存在します。メソッドはパッケージにバインドされています。これは正しいですか?
いいえ、それは正しくありません。の関数がいくつかあるだけです。 ビルトイン パッケージの関数のうち、常に利用可能なものがいくつかあります。それ以外のものはすべてインポートする必要があります。
メソッドという用語は、オブジェクト指向プログラミングで登場しました。オブジェクト指向言語(例えばC++)では、データや関数をカプセル化したクラスを定義することができます。クラスの中のこれらの関数はメソッドと呼ばれ、そのメソッドを呼び出すにはそのクラスのインスタンスが必要です。
Go は古典的な意味での OOP 言語ではありませんが、Go でも用語は基本的に同じです。Goでは、レシーバーを取る関数は通常メソッドと呼ばれます(おそらく、人々がまだOOPの用語に慣れているからでしょう)。
ですから、例えば
func MyFunction(a, b int) int {
return a + b
}
// Usage:
// MyFunction(1, 2)
しかし
type MyInteger int
func (a MyInteger) MyMethod(b int) int {
return a + b
}
// Usage:
// var x MyInteger = 1
// x.MyMethod(2)
関連
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptの変数のスコープとは何ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] クロージャ」と「ラムダ」の違いは何ですか?
-
[解決済み] 関数名の前後にアンダースコア"__"が付いている関数があるのはなぜですか?
-
[解決済み] クラスメソッドとインスタンスメソッドの違いは何ですか?
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み】init()関数はいつ実行されるのですか?
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
最新
-
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 実装 サイバーパンク風ボタン