0

このタイプを考えると

type Response map[string]interface{}

デフォルト値を入力するメソッド NewResponse を作成しました。

 func NewResponse() Response {
    resp := Response{"status": 200, "msg": "Added jobs to queue"}

    resp_metadata := make(map[string]string)
    resp_metadata["base"] = "api/v1"
    resp_metadata["self"] = "/crawler/jobs/add"
    resp["metadata"] = resp_metadata
    return resp
}

私は好きですが、代わりNewResponse()にやりたいResponse.New()ので、メソッドの署名は次のようにする必要があります

func (Response) New() Response {

しかし、その後、常にエラーが発生しますnot enough arguments in call to Response.New

では、これをどのように実装できますか?

4

3 に答える 3

3

Go プログラムを作成するときは、慣用的な Go を使用します。その後、他の人があなたのプログラムを読むことができます。例えば、

package main

import "fmt"

type Response map[string]interface{}

func NewResponse() Response {
    metadata := map[string]string{
        "base": "api/v1",
        "self": "/crawler/jobs/add",
    }
    r := Response{
        "status":   200,
        "msg":      "Added jobs to queue",
        "metadata": metadata,
    }
    return r
}

func main() {
    resp := NewResponse()
    fmt.Println(resp)
}

出力:

map[status:200 msg:Added jobs to queue metadata:map[base:api/v1 self:/crawler/jobs/add]]
于 2013-07-10T16:08:09.347 に答える