APIを扱うメソッド・関数の返り値【Go】
APIを扱うメソッド・関数の返り値について、
structの場合はポインタ渡し、
スライスの場合は値渡しとすることが一般的です。
スライスは配列に対するエイリアスですので、ポインタとする必要性がなく、
structの場合は、コピーが作成されてしまうので
ポインタとして返した方が、余計なオーバーヘッドが無くなります。
type APIClient struct { key string secret string httpClient *http.Client } type ResponseSendChildOrder struct { ... } type Order struct { ... } func (api *APIClient) SendOrder(order *Order) (*ResponseSendChildOrder, error) { ... return &response, nil // ポインタ } func (api *APIClient) ListOrder(query map[string]string) ([]Order, error) { // Order型のものを複数含んだスライスを返す ... return responseListOrder, nil // 値 }