2017-07-20 10 views
-3

私はGoLangのメソッドを試しています。私は初心者ですので、私が愚かな質問をしている場合は私を修正してください。 linkは、メソッドを通常の関数として記述できると言います。私は、次のコードをしようとすると、しかし、それはしかし、予想通り、次のコード内のコメント行が作業している GoLangメソッドでコンパイルエラーが発生するのはなぜですか?

a.sq undefined (type MyFloat has no field or method sq) 

として私は、エラーをコンパイルできます。 私を助けてください。以下は私のコードです:

package main 

import (
    "fmt" 
) 

type MyFloat float64 

func sq (f MyFloat) string { 
    return fmt.Sprintln("The square is: ", f*f) 
} 

/*func (f MyFloat) sq() string { 
    return fmt.Sprintln("The square is: ", f*f) 
}*/ 

func main() { 

    a := MyFloat(2.0) 
    fmt.Println(a.sq()) 
} 

答えて

2

あなたはsqを関数ではなくメソッドとして宣言しています。

func (f MyFloat) sq() string { 
    return fmt.Sprintln("The square is: ", f*f) 
} 

あなたがa.sq()を行うことができるようになります。この方法は:あなたはMyFloatsqを添付したい場合は、同じようにそれを宣言する必要があります。

+0

GoLangの通常の機能として "メソッド"を書く方法を教えてくれるリンクを確認してください。また、私のコードでは、両方の方法についても言及しています。 –

+0

ツアーが伝えようとしていることは、メソッドが機能だということです。それは関数がメソッドであることを意味するものではありません。したがって 'func sq(f MyFloat)string'はメソッドではなく、' a.sq() '形式で呼び出すことはできません。 – yazgazan

+0

それは私の質問のコメントコードがメソッドを使用するための最良の方法だということですか? –

関連する問題