golang エラーの解決策: 未定義の名前 'x' (エクスポートされていない名前を参照できません)、解決策
golang を使用してプログラムを作成すると、さまざまな問題が発生することがよくあります。エラーレポート。よくあるエラーの 1 つは、「未定義の名前 'x' (エクスポートされていない名前を参照できません)」です。このエラーは、エクスポートされていない変数または関数にアクセスするときにエラーが発生したことを示します。では、この問題をどうやって解決すればいいのでしょうか?この記事ではこのエラーの解決方法を詳しく紹介します。
まず、golang のアクセス許可ルールを理解する必要があります。 golang では、変数や関数のアクセス許可は、その最初の文字の大文字と小文字に関係します。変数または関数の最初の文字が大文字の場合はエクスポートされ、他のパッケージでアクセスして使用できます。変数または関数の最初の文字が小文字の場合はエクスポートされず、他のパッケージでのみアクセスして使用できます。他のパッケージ。現在のパッケージ内でアクセスおよび使用されます。別のパッケージ内のエクスポートされていない変数または関数にアクセスすると、「名前が定義されていません」エラーが発生します。
以下は、このエラーが発生する状況をシミュレートするための簡単なサンプル コードです:
package main import "fmt" type person struct { name string age int } func main() { p := person{name: "Alice", age: 20} fmt.Println(p.name) // 会报错:"undefined name 'name'" }
上記のコードでは、構造体 person
を定義します。フィールド: name
および age
。 main
関数では、person
のインスタンス p
を作成し、その name
フィールドへのアクセスを試みます。ただし、name
フィールドはエクスポートされないため (最初の文字は小文字)、他のパッケージではアクセスできず、エラーが発生します。
このエラーを解決するには、アクセスする必要があるフィールドまたは関数の最初の文字を大文字に変更するだけです。修正されたコードは次のとおりです。
package main import "fmt" type Person struct { // 注意这里的首字母大写 Name string // 注意这里的首字母大写 Age int // 注意这里的首字母大写 } func main() { p := Person{Name: "Alice", Age: 20} // 注意这里的结构体名称也要修改为大写 fmt.Println(p.Name) // 不再报错,能够正确访问"name"字段 }
上記の修正されたコードでは、構造 person
を person
に変更し、name## も変更しました。 # および
age フィールドは、
Name および
Age に変更されます。
Name フィールドはエクスポートされる (最初の文字が大文字になる) ため、他のパッケージでこれにアクセスして正しく使用できます。
以上がgolang エラーの解決: 未定義の名前 'x' (エクスポートされていない名前を参照できません)、解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。