gpt4 book ai didi

go - 如何通过指针访问结构数组?

转载 作者:IT王子 更新时间:2023-10-29 02:32:55 25 4
gpt4 key购买 nike

以下是我的 2 个结构

type Attempt struct {
StartTime string `json:"startTime"`
EndTime string `json:"endTime"`
LastUpdated string `json:"lastUpdated"`
Duration uint32 `json:"duration"`
SparkUser string `json:"sparkUser"`
IsCompleted bool `json:"completed"`
LastUpdatedEpoch int64 `json:"lastUpdatedEpoch"`
StartTimeEpoch int64 `json:"startTimeEpoch"`
EndTimeEpoch int64 `json:"EndTimeEpoch"`
}

type Apps struct {
Id string `json:"id"`
Name string `json:"name"`
Attempts []Attempt `json:"attempts"`
}

以下测试将 json 字符串解析为此 apps := &[]Apps{}。访问 apps 的成员时,出现以下错误

invalid operation: apps[0] (type *[]Apps does not support indexing)

测试

func TestUnmarshalApps(t *testing.T) {
appsJson := `[
{
"id": "app-20161229224238-0001",
"name": "Spark shell",
"attempts": [
{
"startTime": "2016-12-30T03:42:26.828GMT",
"endTime": "2016-12-30T03:50:05.696GMT",
"lastUpdated": "2016-12-30T03:50:05.719GMT",
"duration": 458868,
"sparkUser": "esha",
"completed": true,
"endTimeEpoch": 1483069805696,
"lastUpdatedEpoch": 1483069805719,
"startTimeEpoch": 1483069346828
},
{
"startTime": "2016-12-30T03:42:26.828GMT",
"endTime": "2016-12-30T03:50:05.696GMT",
"lastUpdated": "2016-12-30T03:50:05.719GMT",
"duration": 458868,
"sparkUser": "esha",
"completed": true,
"endTimeEpoch": 1483069805696,
"lastUpdatedEpoch": 1483069805719,
"startTimeEpoch": 1483069346828
}
]
},
{
"id": "app-20161229222707-0000",
"name": "Spark shell",
"attempts": [
{
"startTime": "2016-12-30T03:26:50.679GMT",
"endTime": "2016-12-30T03:38:35.882GMT",
"lastUpdated": "2016-12-30T03:38:36.013GMT",
"duration": 705203,
"sparkUser": "esha",
"completed": true,
"endTimeEpoch": 1483069115882,
"lastUpdatedEpoch": 1483069116013,
"startTimeEpoch": 1483068410679
}
]
}
]`
apps := &[]Apps{}
err := json.Unmarshal([]byte(appsJson), apps)
if err != nil {
t.Fatal(err)
}
if len(*apps) != 2 {
t.Fail()
}

if len(apps[0].Attempts) != 2 {
t.Fail()
}
}

如何访问 Attempts、Id 等字段?

最佳答案

apps := &[]Apps{}

apps 的类型为 *[]Apps(指向 Apps 对象 slice 的指针)。

您确定您不是要使用类型 []*Apps(指向 Apps 对象的指针片段)吗?

假设 *[]Apps 确实是您想要的类型,您需要使用 (*apps)[i] 来访问 的每个元素应用程序。这种类型也是为什么你还需要使用 len(*apps) 而不是 len(apps) (和 *apps 漂亮实际上几乎所有的东西)。

关于go - 如何通过指针访问结构数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41405202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com