Go では、構造体を操作するときに、特定のフィールドとメソッドをプライベートとして持つ必要がある場合があります。その構造体のメンバーはアクセスできますが、パッケージのスコープ内の他の型や関数はアクセスできません。
これを実現するには、次のようにします。 Go では、大文字で始まる識別子はパッケージからエクスポートされ、宣言パッケージの外部のエンティティによってアクセスできることに注意することが重要です。逆に、小文字で始まる識別子はパッケージ自体内でのみアクセスできます。
ある型のメンバーにその型のメンバーのみがアクセスできるようにすることが目標の場合は、その型をその型とともに配置する必要があります。メンバー関数は、別のパッケージ内で、そのパッケージ内の唯一の型として扱われます。これを行うと、型とそのメンバーはそのパッケージに対してプライベートになり、外部からアクセスできなくなります。
コードを変更して mytype 構造体と doPrivate メソッドをプライベートにする方法は次のとおりです。
// Define a separate package for mytype. package mytypepkg type mytype struct { size string hash uint32 } func (r *mytype) doPrivate() string { return r.size }
現在、mytype と doPrivate は独自のパッケージ内にカプセル化されており、そのパッケージの外の他の型や関数からはアクセスできなくなります。
以上がGo 構造体でプライベート フィールドとメソッドをカプセル化する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。