ホームページ >バックエンド開発 >Golang >golangのメソッドと関数のアクセス制限の違いは何ですか?

golangのメソッドと関数のアクセス制限の違いは何ですか?

王林
王林オリジナル
2024-04-26 15:12:02506ブラウズ

Go のアクセス制御は、名前の接頭辞文字によって指定されます。 メソッド アクセス制御: public (大文字): すべてのパッケージにアクセス可能 private (小文字): それを定義するパッケージのみにアクセス可能 関数アクセス制御: public (大文字): allパッケージ アクセス可能なパッケージ (小文字): それを定義するパッケージのみがアクセス可能です

golang 方法和函数的访问限制有什么区别?

Go のメソッドと関数のアクセス制限

Go 言語では、変数、メソッド、関数のアクセス許可は、名前の接頭辞文字によって決まります。

メソッド アクセス制御

メソッドは、構造体の型に関連付けられた関数です。これらには次の文字が接頭辞として付けられます:

  • public (大文字): すべてのパッケージでアクセスできます。
  • private (小文字): 定義されているパッケージ内でのみアクセス可能です。

例:

type Person struct {
    name string
}

// public 方法
func (p Person) PublicMethod() {
    // ...
}

// private 方法
func (p Person) privateMethod() {
    // ...
}

関数アクセス制御

メソッドと同様に、関数のプレフィックス文字は次のとおりです。アクセス許可も決定します:

  • public (大文字): すべてのパッケージでアクセス可能。
  • package (小文字): 定義されているパッケージ内でのみアクセス可能です。

例:

// public 函数
func PublicFunction() {
    // ...
}

// package 函数
func packageFunction() {
    // ...
}

実際的なケース

パッケージがあるとしますcustomer Customer 構造体とパブリック メソッド GetFullName:

package customer

type Customer struct {
    firstName string
    lastName string
}

// public 方法
func (c Customer) GetFullName() string {
    return c.firstName + " " + c.lastName
}

別のパッケージ main では、# を使用できます。 ##customer パッケージ内の Customer タイプと GetFullName メソッド: <pre class='brush:go;toolbar:false;'>package main import ( &quot;fmt&quot; &quot;customer&quot; ) func main() { c := customer.Customer{ firstName: &quot;John&quot;, lastName: &quot;Doe&quot;, } fullName := c.GetFullName() fmt.Println(fullName) // 输出:John Doe }</pre>

以上がgolangのメソッドと関数のアクセス制限の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。