在go中,如何为没有任何参数的类型创建构造函数
鉴于这种类型在go中,如何为没有任何参数的类型创建构造函数,go,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/v
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 {
但是我总是在call to Response.New中遇到错误参数不足
那么,如何实现这一点呢 虽然这绝对不是惯用的围棋,但你可以做一些事情:
但实际上,func NewResponse()Response
没有什么错,尽管它绝对不是惯用的围棋,但您可以做一些事情:
但是实际上,func NewResponse()Response没有什么问题,它没有问题。Go没有构造函数。创建一个“空”对象就是创建一个对象类型的
您试图做的是对现有响应对象调用一个名为New的响应方法,该对象将返回一个(不同的)响应对象
resp:=Response{}
或resp:=make(Response)
如果您需要创建一个空响应,则可以使用它。它不需要。Go没有构造函数。创建一个“空”对象就是创建一个对象类型的
您试图做的是对现有响应对象调用一个名为New的响应方法,该对象将返回一个(不同的)响应对象
resp:=Response{}
或resp:=make(Response)
如果您需要创建一个空响应,则可以使用。编写围棋程序时,请使用惯用围棋。然后,其他人将能够阅读您的程序。比如说,
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]]
编写围棋程序时,请使用惯用围棋。然后,其他人将能够阅读您的程序。比如说,
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]]
谢谢:)我保留了最初的(新回复)版本,但将普基托比奥的回复标记为答案,因为它确实回答了“如何”的问题。但是现在我把代码更新到了你的版本。顺便说一句,我实际上是用它来自动整理成json的:func(r Response)String()(s String){b,err:=json.Marshal(r)if err!=nil{s=”“return}s=String(b)return}可能会对某人有所帮助。谢谢:)我保留了最初的(NewResponse)但版本将普基托比奥的回答标记为答案,因为它确实回答了“如何”的问题。但是现在我把代码更新到了你的版本。顺便说一句,我实际上是用它来自动整理成json,如下所示:func(r Response)String()(s String){b,err:=json.Marshal(r)如果err!=nil{s=”“return}s=String(b)return}它可能会帮助某些人。谢谢。保留了最初的版本,但仍然知道如何做到。谢谢。保留了最初的版本,但仍然知道如何做到这一点。