Go调用Google Cloud Vision API时Likelihood_POSSIBLE未声明报错如何解决
报错原因
- 核心原因是Google Cloud Vision Go SDK的版本差异导致常量定义路径变化:
- 最新的v2版本SDK已经将
Likelihood枚举相关的所有常量迁移到了visionpb子包下,不再从vision根包直接导出 - 常量命名规则也发生了变化,旧版本的
Likelihood_POSSIBLE在v2版本中全称为Likelihood_LIKELIHOOD_POSSIBLE
- 最新的v2版本SDK已经将
- 小概率场景为导入的SDK包路径错误,未使用官方提供的SDK包
正确处理方式
针对v2版本SDK(官方当前推荐版本)
- 首先导入对应的protobuf定义子包:
import visionpb "cloud.google.com/go/vision/v2/apiv1/visionpb"
- 修改判断逻辑为如下写法即可:
if prop.Adult == visionpb.Likelihood_LIKELIHOOD_POSSIBLE { // 对应业务处理逻辑 }
可选的枚举值包括visionpb.Likelihood_LIKELIHOOD_VERY_UNLIKELY、visionpb.Likelihood_LIKELIHOOD_UNLIKELY、visionpb.Likelihood_LIKELIHOOD_POSSIBLE、visionpb.Likelihood_LIKELIHOOD_LIKELY、visionpb.Likelihood_LIKELIHOOD_VERY_LIKELY,可根据业务需求选择。
针对v1版本SDK
如果还在使用v1版本的SDK,直接使用根包下的驼峰命名常量即可:
if prop.Adult == vision.Possible { // 对应业务处理逻辑 }
内容的提问来源于stack exchange,提问作者invalid
相关产品推荐
相关产品推荐

