go言語の学習:typeでインターフェースを定義
概要
interface自体はstructを利用してする感じと認識している
構造体とかとなんかごっちゃになっていてJavaのクラスとかと勝手が異なるので混乱している
そもそもstringやintにメソッドは付与できるのか?
type data1 string type data2 int
こんな感じで定義するらしい
関数?メソッド?を入れたい場合は構造体でクラスを定義したときと同じ感じでいける
サンプル
package main import ( "fmt" ) func main() { fmt.Println("start") var a data1 a = "aaaaaaa" a.test1() a.test2() a.clear() fmt.Println("sample1:" + a) var b data2 b = 50 b.add() fmt.Printf("sample2:%d\n", b) fmt.Println("end") } // dataというインターフェースの定義 type data1 string type data2 int // サンプルメソッド func(c *data1) test1() { fmt.Println("test1:" + *c) } // サンプルメソッド func(c *data1) test2() { fmt.Println("test2: [" + *c + "]") } // サンプルメソッド func(c *data1) clear() { *c = "" } // サンプルメソッド func (c *data2) add() { *c *= 100 }
インターフェースという考えがうまく理解できていないのでこのような
記載はあまりできなかった(´・ω・`)
まとめ
typeを使用してインターフェース型として定義すれば
string、intでメソッドを付与できる
わざわざ構造体を定義したくない場合はこちらで対応可能