猿问

在go中,如何为没有任何参数的类型创建构造函数

鉴于这种类型


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

}

我称之为 likeNewResponse()但我想改为这样做Response.New(),所以方法签名应该是这样的


func (Response) New() Response {

但后来我总是得到错误not enough arguments in call to Response.New。


那么,如何实现呢?


肥皂起泡泡
浏览 260回答 3
3回答

江户川乱折腾

它没有。Go 没有构造函数。创建“空”对象就是创建对象类型的零值。您要做的是在现有的 Response 对象上调用一个名为 New 的 Response 方法,该方法将返回一个(不同的)Response 对象。resp := Response{}或者resp := make(Response)如果您需要创建一个空的响应也可以。
随时随地看视频慕课网APP

相关分类

Go
我要回答