技術向上

プログラミングの学び、気になるテクノロジーやビジネストレンドを発信

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    // 値
}