1
タイプを宣言するとき、私は行くを学んで行くツアーで、コードのこの作品に出会ったんだ:方法の曖昧ゴー
ここpackage main
import (
"fmt"
"math"
)
type MyFloat int
func (f MyFloat) Abs() float64 {
if f < 0 {
return float64(-f)
}
return float64(f)
}
func (f MyFloat) run() string{
fmt.Println("This is called")
return "Hey there"
}
func main() {
f := MyFloat(-math.Sqrt2)
fmt.Println(f.Abs())
fmt.Println(f.run())
}
我々はMyFloat名前付きの型を宣言し、戻り値の型はのfloat64です。私はfloat64だけを返すメソッドを宣言できると思っていました。上記の場合、文字列を返すメソッドrun()
を宣言しました。これはどのように可能ですか?なぜ私はこのような特定の戻り値の型を持たない型を宣言できません。type MyFloat
?
'type'を宣言する際のポイントとは何ですか(例えば、あなたの質問に' type MyFloat'など)? – putu
@putu ok。では、 'run()'はどのように機能しましたか? –
'run()'は型宣言*ではないメソッドなので、* rule *は異なります。メソッド/関数は値を返しません。 'func main()'を実行します。任意の型( 'float64'に限定されない)を持つ値を返すことも可能です。 'string、float64、MyFloat'など... *型宣言* **は型を返さないことに注意してください。それは基本的な表現が*型名の後ろに与えられるユーザ定義型を作ります( 'MyFloat'の基になる型は' float64'です)。 – putu