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

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

王林
リリース: 2024-04-26 15:12:02
オリジナル
503 人が閲覧しました

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 メソッド:

package main

import (
    "fmt"
    "customer"
)

func main() {
    c := customer.Customer{
        firstName: "John",
        lastName: "Doe",
    }
    
    fullName := c.GetFullName()
    fmt.Println(fullName) // 输出:John Doe
}
ログイン後にコピー

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート