2016-03-22 10 views

答えて

7

あなたはレシーバ値(Rectangle値)のフィールドやメソッドを参照したい場合は暗黙の(Javaでthisのような)実際の受信値を表す識別子、およびがないので、あなたはあなたの識別子を必要とします使える。

この仕様では、受信者の名前に名前を付ける必要はありません。

func (_ Rectangle) Foo() string { 
    return "foo" 
} 

あるいはこの:レシーバー名を省略(パラメータ名):スペックから

func (Rectangle) Foo() string { 
    return "foo" 
} 

関連セクション:Method declarations

blank identifierを使用して、次は有効な構文であります
MethodDecl = "func" Receiver MethodName (Function | Signature) . 
Receiver  = Parameters . 

パラメータは次のとおりです。

Parameters  = "(" [ ParameterList [ "," ] ] ")" . 
ParameterList = ParameterDecl { "," ParameterDecl } . 
ParameterDecl = [ IdentifierList ] [ "..." ] Type . 

あなたが最後の行で見ることができるように、IdentifierListは任意である(ただし、Typeが必要です)。

1

構造体メソッドは、クラスメソッドと同様です。変数 'r'は、メソッドが適用されている構造体/クラスインスタンス/オブジェクトへの参照です。その参照がなければ、その構造体/オブジェクトに含まれるものにアクセスすることはできません。

var smallRectangle = Rectangle{5,3} 

は、今私はArea

area := smallRectangle.Area() 

は、関数内で何が起こるか見てみましょう長方形の方法を使用して面積を計算したい:

は、例えば貸し付けは、私はあなたの構造体を使用してsmallRectangleを作成しました。 rコピーsmallRectangleになります。これはそれを呼び出す構造体オブジェクトです。

Iczaによって示されるよう
func (smallRectangle Rectangle) Area() int { 
    return smallRectangle.length * smallRectangle.width 
} 

は、self又はthisような暗黙的な識別子が存在しないので、この方法は、構造体の値にアクセスするための唯一の方法は、識別子rによるものです。

関連する問題