go - 如何在 GO 中初始化嵌套的结构数组?
问题描述
我有这个结构:
type RemedyCircuitsResp struct {
Circuits []struct {
RemedyCircuitID string `json:"RemedyCircuitId"`
Status string `json:"Status"`
VendorName string `json:"VendorName"`
VendorCommunityID int `json:"VendorCommunityId"`
CommunityID int `json:"CommunityId"`
ZLocCommunityID int `json:"ZLocCommunityId"`
CircuitType string `json:"CircuitType"`
InstalledSpeed string `json:"InstalledSpeed"`
CircuitID string `json:"CircuitId"`
CircuitSpeed string `json:"CircuitSpeed"`
CircuitFunction string `json:"CircuitFunction"`
ContractID string `json:"ContractId"`
ALocName string `json:"ALocName"`
ZLocName string `json:"ZLocName"`
ExpectedMonthlyCircuitCost string `json:"ExpectedMonthlyCircuitCost"`
ExpectedOneTimeCircuitCost string `json:"ExpectedOneTimeCircuitCost"`
TotalCost string `json:"TotalCost"`
CustomerMakeReadyComplete string `json:"CustomerMakeReadyComplete"`
CarrierOriginalDueDate string `json:"CarrierOriginalDueDate"`
CarrierCurrentDueDate string `json:"CarrierCurrentDueDate"`
CarrierCompletion string `json:"CarrierCompletion"`
EnaTurnUpDate string `json:"EnaTurnUpDate"`
SiteVisit string `json:"SiteVisit"`
DisconnectRequested string `json:"DisconnectRequested"`
DisconnectEffective string `json:"DisconnectEffective"`
} `json:"Circuits"`
ResponseStatus struct {
ErrorCode string `json:"ErrorCode"`
Message string `json:"Message"`
StackTrace string `json:"StackTrace"`
Errors []struct {
ErrorCode string `json:"ErrorCode"`
FieldName string `json:"FieldName"`
Message string `json:"Message"`
} `json:"Errors"`
} `json:"ResponseStatus"`
}
我试图初始化电路和错误,但我不知道如何:
allCircuits := RemedyCircuitsResp{}
allCircuits.Circuits = make([]RemedyCircuitsResp.Circuits, 0)
allCircuits.ResponseStatus.Errors = make([]RemedyCircuitsResp.ResponseStatus.Errors, 0)
Visual Studio 代码 说:
RemedyCircuitsResp.Circuits undefined (type RemedyCircuitsResp has no method Circuits)
RemedyCircuitsResp.ResponseStatus undefined (type RemedyCircuitsResp has no method ResponseStatus)
解决方案
不幸的是,您不能定义匿名结构,然后以非匿名方式对其进行初始化。如果你想这样做,你必须重新输入整个结构。这种方式比较容易。
package main
import (
"fmt"
)
type Circuit struct {
RemedyCircuitID string `json:"RemedyCircuitId"`
Status string `json:"Status"`
VendorName string `json:"VendorName"`
VendorCommunityID int `json:"VendorCommunityId"`
CommunityID int `json:"CommunityId"`
ZLocCommunityID int `json:"ZLocCommunityId"`
CircuitType string `json:"CircuitType"`
InstalledSpeed string `json:"InstalledSpeed"`
CircuitID string `json:"CircuitId"`
CircuitSpeed string `json:"CircuitSpeed"`
CircuitFunction string `json:"CircuitFunction"`
ContractID string `json:"ContractId"`
ALocName string `json:"ALocName"`
ZLocName string `json:"ZLocName"`
ExpectedMonthlyCircuitCost string `json:"ExpectedMonthlyCircuitCost"`
ExpectedOneTimeCircuitCost string `json:"ExpectedOneTimeCircuitCost"`
TotalCost string `json:"TotalCost"`
CustomerMakeReadyComplete string `json:"CustomerMakeReadyComplete"`
CarrierOriginalDueDate string `json:"CarrierOriginalDueDate"`
CarrierCurrentDueDate string `json:"CarrierCurrentDueDate"`
CarrierCompletion string `json:"CarrierCompletion"`
EnaTurnUpDate string `json:"EnaTurnUpDate"`
SiteVisit string `json:"SiteVisit"`
DisconnectRequested string `json:"DisconnectRequested"`
DisconnectEffective string `json:"DisconnectEffective"`
}
type Error struct {
ErrorCode string `json:"ErrorCode"`
FieldName string `json:"FieldName"`
Message string `json:"Message"`
}
type ResponseStatus struct {
ErrorCode string `json:"ErrorCode"`
Message string `json:"Message"`
StackTrace string `json:"StackTrace"`
Errors []Error `json:"Errors"`
}
type RemedyCircuitsResp struct {
Circuits []Circuit `json:"Circuits"`
ResponseStatus ResponseStatus `json:"ResponseStatus"`
}
func main() {
fmt.Printf("%#v\n", RemedyCircuitsResp{
Circuits: []Circuit{{}, {}, {}, {}},
})
}
或者,您必须执行以下操作:
package main
import (
"fmt"
)
type RemedyCircuitsResp struct {
Circuits []struct {
RemedyCircuitID string `json:"RemedyCircuitId"`
Status string `json:"Status"`
VendorName string `json:"VendorName"`
VendorCommunityID int `json:"VendorCommunityId"`
CommunityID int `json:"CommunityId"`
ZLocCommunityID int `json:"ZLocCommunityId"`
CircuitType string `json:"CircuitType"`
InstalledSpeed string `json:"InstalledSpeed"`
CircuitID string `json:"CircuitId"`
CircuitSpeed string `json:"CircuitSpeed"`
CircuitFunction string `json:"CircuitFunction"`
ContractID string `json:"ContractId"`
ALocName string `json:"ALocName"`
ZLocName string `json:"ZLocName"`
ExpectedMonthlyCircuitCost string `json:"ExpectedMonthlyCircuitCost"`
ExpectedOneTimeCircuitCost string `json:"ExpectedOneTimeCircuitCost"`
TotalCost string `json:"TotalCost"`
CustomerMakeReadyComplete string `json:"CustomerMakeReadyComplete"`
CarrierOriginalDueDate string `json:"CarrierOriginalDueDate"`
CarrierCurrentDueDate string `json:"CarrierCurrentDueDate"`
CarrierCompletion string `json:"CarrierCompletion"`
EnaTurnUpDate string `json:"EnaTurnUpDate"`
SiteVisit string `json:"SiteVisit"`
DisconnectRequested string `json:"DisconnectRequested"`
DisconnectEffective string `json:"DisconnectEffective"`
} `json:"Circuits"`
ResponseStatus struct {
ErrorCode string `json:"ErrorCode"`
Message string `json:"Message"`
StackTrace string `json:"StackTrace"`
Errors []struct {
ErrorCode string `json:"ErrorCode"`
FieldName string `json:"FieldName"`
Message string `json:"Message"`
} `json:"Errors"`
} `json:"ResponseStatus"`
}
func main() {
value := RemedyCircuitsResp{
Circuits: []struct {
RemedyCircuitID string `json:"RemedyCircuitId"`
Status string `json:"Status"`
VendorName string `json:"VendorName"`
VendorCommunityID int `json:"VendorCommunityId"`
CommunityID int `json:"CommunityId"`
ZLocCommunityID int `json:"ZLocCommunityId"`
CircuitType string `json:"CircuitType"`
InstalledSpeed string `json:"InstalledSpeed"`
CircuitID string `json:"CircuitId"`
CircuitSpeed string `json:"CircuitSpeed"`
CircuitFunction string `json:"CircuitFunction"`
ContractID string `json:"ContractId"`
ALocName string `json:"ALocName"`
ZLocName string `json:"ZLocName"`
ExpectedMonthlyCircuitCost string `json:"ExpectedMonthlyCircuitCost"`
ExpectedOneTimeCircuitCost string `json:"ExpectedOneTimeCircuitCost"`
TotalCost string `json:"TotalCost"`
CustomerMakeReadyComplete string `json:"CustomerMakeReadyComplete"`
CarrierOriginalDueDate string `json:"CarrierOriginalDueDate"`
CarrierCurrentDueDate string `json:"CarrierCurrentDueDate"`
CarrierCompletion string `json:"CarrierCompletion"`
EnaTurnUpDate string `json:"EnaTurnUpDate"`
SiteVisit string `json:"SiteVisit"`
DisconnectRequested string `json:"DisconnectRequested"`
DisconnectEffective string `json:"DisconnectEffective"`
}{{}, {}, {}, {}},
}
fmt.Printf("%#v\n", value)
}
推荐阅读
- tmux - 如何在不启用鼠标选择的情况下在 tmux 中启用鼠标滚动?
- python - JSON有效负载的Python字符串连接
- python - PySpark 时间戳格式
- ruby-on-rails - ROR 正则表达式。我正在尝试验证字符串中的第一个和第四个字符是不是 0 或 1 的任何数字
- javascript - 如何从状态中提取特定对象并获取其中一项?
- javascript - 需要帮助编写一个递归函数来查找一个人的后代。JavaScript
- c - 使用 'i' 作为整数后缀时,编译器不会给出任何错误
- python - 尝试将输入转换为列表
- kubernetes - 在 1 个服务多 DC 场景中,流量仍分配到禁用的 POD - Openshift
- operating-system - 没有操作系统的 Grub 是如何编程的?是否可以在未安装其他操作系统的新组装 UEFI PC 中仅安装 grub 引导加载程序?