You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中创建BLE服务过滤数组是否有更简洁的实现方式?

问题解答

Go 支持更简洁的切片字面量写法,你需要的效果可以直接通过以下代码实现:

services, err := client.DiscoverServices([]ble.UUID{ble.MustParse("1820")})
for _, s := range services {
    fmt.Printf("%s\n", s.UUID)
}

语法说明

你尝试写的 [ ble.MustParse("1820") ] 不符合 Go 的语法规范:

  • Go 中 [T] 前缀代表固定长度数组,需要显式指定长度,而 BLE 库的 DiscoverServices 方法接收的参数一般是可变长度切片,类型为 []ble.UUID
  • 构造切片字面量的标准格式为 []元素类型{元素列表},可以直接 inline 写在参数位置,不需要提前声明变量再追加元素

如果需要过滤多个服务 UUID,直接在大括号里用逗号分隔元素即可:

services, err := client.DiscoverServices([]ble.UUID{
    ble.MustParse("1820"),
    ble.MustParse("180F"), // 其他目标服务UUID
})

如果该过滤规则会在多处复用,可以提前定义为包级变量,避免重复解析UUID,代码也更整洁:

// 包级提前定义目标服务UUID列表
var targetServiceFilters = []ble.UUID{ble.MustParse("1820")}

// 业务逻辑中直接调用
services, err := client.DiscoverServices(targetServiceFilters)

内容的提问来源于stack exchange,提问作者Cliff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:24:05