有人可以解释一下这个代码中双花括号{{
的含义是什么吗? :
func (t *testService) APIs() []rpc.API {
return []rpc.API{{
Namespace: "test",
Version: "1.0",
Service: &TestAPI{
state: &t.state,
peerCount: &t.peerCount,
},
}}
}
AFIK单花括号足以创建一个结构,所以为什么要加倍呢?
API结构的定义如下:
package rpc
// API describes the set of methods offered over the RPC interface
type API struct {
Namespace string // namespace under which the rpc methods of Service are exposed
Version string // api version for DApp's
Service interface{} // receiver instance which holds the methods
Public bool // indication if the methods must be considered safe for public use
}
答案 0 :(得分:4)
这是一个稍短的版本(更少的行和更少的缩进):
return []rpc.API{
{
Namespace: "test",
Version: "1.0",
Service: &TestAPI{
state: &t.state,
peerCount: &t.peerCount,
},
},
}
它是一个包含一个元素的结构片段。
答案 1 :(得分:1)
[]rpc.API{ }
定义了rpc.API
的空切片。您可以在这些大括号中放置任意数量的rpc.API
,以使它们成为切片的元素。
您拥有的代码与:
相同a := rpc.API{ Namespace: "test", ... }
return []rpc.API{ a }