Go言語でプリミティブ型に拡張メソッドを生やす【golang】【type】【extend】
問題
Go言語で、たとえばstring型を拡張してみたい
一応
package main type MyStr string func (s MyStr) Waros(i int) MyStr { for j := 0; j < i; j++ { s += "w" } return s } func main() { var s MyStr = "なんつってつっちゃった" println( s.Waros(20), ) }
んーでもこれポインタ渡せてないから単なる関数と何ら違わない気がする。その証拠に
func main() { var s MyStr = "なんつってつっちゃった" println( s.Waros(20),// なんつってつっちゃったwwwwwwwwwwwwwwwwwwww s, // なんつってつっちゃった ) }
ポインタを渡して自分自身を変えてみたい
package main type MyStr string func (s *MyStr) Repeat() { *s += "♪ " + *s } func main() { var s MyStr = "なんつってつっちゃった♪" s.Repeat() s.Repeat() s.Repeat() println(s) // なんつってつっちゃった♪ なんつってつっちゃった♪ なんつってつっちゃった♪ なんつってつっちゃった♪ なんつってつっちゃった♪ なんつってつっちゃった♪ なんつってつっちゃった♪ なんつってつっちゃった }
基本的なこと聞いてしまった...ハズカシイ
DRYな備忘録