2017-08-11 40 views
-8

私はこのように定義されたいくつかの移動機能を見てきました:Goの関数名の前のパラメータ?

type poly struct { 
    coeffs [256]uint16 
} 

func (p *poly) reset() { 
    for i := range p.coeffs { 
     p.coeffs[i] = 0 
    } 
} 

後でとして呼び出すことができますどの:私は、私が知っている他のプログラミング言語でこれを見ていない

var p poly 
p.reset() 

。リセット機能にはp *polyの目的は何ですか?それは関数のパラメータのようですが、関数の名前の前に書かれています。それについての明確化?

+4

ゴランツアーhttps://tour.golang.org/methods/1を読むと、あなたの質問に対する洞察が得られます。 – jeevatkm

+0

あなたが物事を理解するときは、アドレス指定可能性とメソッドの呼び出し方法も知っていなければなりません。これは 'ポリ'値が '* poly'値に変換できるかどうかを理解できるようにします。 'p.reset()'を使っているときに 'poly.reset'が' * poly'レシーバを必要とするので、これは重要です。 'p'は' poly'ではなく 'poly'型です。 –

答えて

5

reset()*polyの方法です。これは非常に基本的なものです。あなたは本当にGo tourで始める必要があります。構文を基本的に理解していない状態でGoを読むと、非常に混乱することになります。

+0

関数名の後にかっこの中ではなく、名前が付けられた関数の前に 'p * poly'を使うことの利点はどこにも見つかりませんでした。どちらを使うの? – typos

+2

利点は、それが方法になるということです。最初の5ページをスキミングしただけでなく、全ツアーを終えましたか?ほとんどの人は数日でGoの構文を学びます(Goのイディオムを理解するのに時間がかかりますが、構文はかなりシンプルです)。あなたはそれがJavaScript/Java/Swift /等であると仮定することはできません。他の言葉で。それはまったく別の言語です。 –

+1

jeevatkmが指摘しているように、メソッドをカバーする特定のセクションはhttps://tour.golang.org/methods/1ですが、ツアーの始めに始まります。 –

関連する問題