golangやっていて見つけたちょっとしたテクニック的なものをまとめてみます。 factory切り替え golangにおいて関数は第一級オブジェクトなので、例えばあるインターフェイスのfactory methodを状況に応じて入れ替えるみたいなこともできます。 // ユーザー情報を表す構造体 type User struct { Name string Age int } // Userに関係するインターフェイス type UserRepo interface { FindByName(string) (*User, error) } // メモリ上にユーザー情報を持っておく type userRepoMem struct { mem []*User } func (r userRepoMem) FindByName(name string) (*User, error) { for _,
![golangちょいテク - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/4ae8df03b0a76f5a772d29f88fe4a9b653e74a6b/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9Z29sYW5nJUUzJTgxJUExJUUzJTgyJTg3JUUzJTgxJTg0JUUzJTgzJTg2JUUzJTgyJUFGJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz05ZDhlNGYwNDgxOTcyYzZjZDdlMjAxY2Q2NDUwMTI2NA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwa3JvdG9uJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1jODEwZjI3YzZiZDVlYmJiY2MyYjE0Y2M0ZmFlMzIyMg%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3D7fdfa7742b70047108bed96817a2c93f)