- 投稿日:2020-09-11T15:50:02+09:00
構造体のインスタンス作成時に&を付ける必要がある時
Goでhttp.Clientを使う際に
transport := &http.Transport{}なんで&付けないとダメなのだろうと調べてみた。
付けないとclient := http.Client{ Transport: transport, // ここでエラーが出る }cannot use transport (type http.Transport) as type http.RoundTripper in field > value:
http.Transport does not implement http.RoundTripper (RoundTrip method
has pointer receiver)怒られる。
RoundTrip method has pointer receiver
interfaceを実装する構造体で、メソッドにポインタレシーバを使うと
構造体を作成する際に、ポインタを取らないとダメらしい。type Hoge interface { SetName(name string) GetName() string } type Sample struct { Name string } func (s *Sample) GetName() string { return s.Name } func (s *Sample) SetName(name string){ s.Name = name } func main() { // var s Hoge = Sample{} これだと動かない var s Hoge = &Sample{} // これは大丈夫 s.SetName("三井直樹") fmt.Println(s.GetName()) }気を付けよう。