2017-12-08 11 views
-1

次のコードはどうやって実行されていますか? "measure"は型ジオメトリの引数を要求しますが、このコードは "square"型の引数を渡します。関数の引数型は、コンパイルや実行時エラーなしで異なります

package main 
import "fmt" 

type geometry interface { 
    area() int 
} 

type square struct { 
    radius int 
} 
func (s square) area() int { 
    return s.radius*s.radius 
} 

func measure(g geometry) { 
    fmt.Println(g) 
    fmt.Println(g.area()) 
} 

func main() { 
    measure(square{radius: 3}) 
} 

outpustは次のようになります。それはメソッドarea()を持っているので

{3} 
9 

おかげ

+3

インターフェイスです。 [ゴーツアーをご利用ください](https://tour.golang.org/methods/9)。 – Adrian

答えて

関連する問題