

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 X-Ray SDK for Go 生成自定义子区段
<a name="xray-sdk-go-subsegments"></a>

**注意**  
X-Ray SDK/Daemon 维护通知 — 2026 年 2 月 25 日 AWS X-Ray SDKs/Daemon 将进入维护模式， AWS 将限制 X-Ray SDK 和 Daemon 版本仅用于解决安全问题。有关支持时间表的更多信息，请参阅 [X-Ray SDK 和 Daemon Support 时间表](xray-sdk-daemon-timeline.md)。我们建议迁移到 OpenTelemetry。有关迁移到仪器的更多信息 OpenTelemetry，请参阅[从 X-Ray 仪器迁移到 OpenTelemetry 仪器](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-migration.html)。

子分段可为跟踪的[分段](xray-concepts.md#xray-concepts-segments)扩展为了给请求提供服务而已完成的工作的详细信息。每次您使用装有检测功能的客户端进行通话时， X-Ray SDK 都会记录在子分段中生成的信息。您可以创建其他子分段来分组其他子分段，来度量某个代码段的性能如何，或是来记录注释和元数据。

使用 `Capture` 方法创建有关函数的子分段。

**Example main.go - 自定义子分段**  

```
func criticalSection(ctx context.Context) {
  //this is an example of a subsegment
  xray.Capture(ctx, "GameModel.saveGame", func(ctx1 context.Context) error {
    var err error

    section.Lock()
    result := someLockedResource.Go()
    section.Unlock()

    xray.AddMetadata(ctx1, "ResourceResult", result)
  })
```

以下屏幕截图中显示的示例说明了 `saveGame` 子分段如何显示在应用程序 `Scorekeep` 的跟踪中。

![跟踪时间轴，显示包含 DynamoDB 调用和操作的 SaveGame 子分段。 GetItem](https://docs.aws.amazon.com/zh_cn/xray/latest/devguide/images/scorekeep-PUTrules-timeline-subsegments.png)
