私は最近、Go プログラミング言語が好きになりました。これまでのところ素晴らしいと思いますが、インターフェイスを理解するのに本当に苦労しています。私はそれらについてかなり読んだことがありますが、それでも私には非常に抽象的です.
以下のインターフェースを使用する簡単なコードを書きました。
package main
import (
"fmt"
"math"
)
type Circer interface {
Circ() float64
}
type Square struct {
side float64
}
type Circle struct {
diam, rad float64
}
func (s *Square) Circ() float64 {
return s.side * 4
}
func (c *Circle) Circ() float64 {
return c.diam * math.Pi
}
func (c *Circle) Area() float64 {
if c.rad == 0 {
var rad = c.diam / 2
return (rad*rad) * math.Pi
} else {
return (c.rad*c.rad) * math.Pi
}
}
func main() {
var s = new(Square)
var c = new(Circle)
s.side = 2
c.diam = 10
var i Circer = s
fmt.Println("Square Circ: ", i.Circ())
i = c
fmt.Println("Circle Circ: ", i.Circ())
}
Circer インターフェースの目的がよくわかりません。メソッドは既に作成されており、Circer をラッパーとして使用するのではなく、構造体でメソッドを直接呼び出すだけで 2 行のコードを節約できました。
足りないものはありますか?インターフェイスの使い方が間違っていませんか? ヘルプや例をいただければ幸いです。