本文整理汇总了Golang中github.com/davyxu/pbmeta.FieldDescriptor.IsOptional方法的典型用法代码示例。如果您正苦于以下问题:Golang FieldDescriptor.IsOptional方法的具体用法?Golang FieldDescriptor.IsOptional怎么用?Golang FieldDescriptor.IsOptional使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/davyxu/pbmeta.FieldDescriptor
的用法示例。
在下文中一共展示了FieldDescriptor.IsOptional方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: SetValue
// 设置单一值
func (self *DynamicMessage) SetValue(fd *pbmeta.FieldDescriptor, value string) bool {
if fd == nil || !self.Desc.Contains(fd) {
log.Errorf("field not found: '%s' in '%s', value: '%s'", fd.Name(), self.Desc.Name(), value)
return false
}
if fd.Type() == pbprotos.FieldDescriptorProto_TYPE_MESSAGE {
log.Errorf("field is message not value: '%s' in '%s', value: '%s'", fd.Name(), self.Desc.Name(), value)
return false
}
fv := self.fetchValue(fd, false)
if fd.IsRepeated() {
log.Errorf("field is repeated by used like non-repeated value", fd.Name())
return false
}
// 可选字段
if fd.IsOptional() {
var existValue string
if fv != nil {
existValue = fv.value
}
// 有指派默认值
if fd.DefaultValue() != "" {
existValue = fd.DefaultValue()
} else {
// 没有指派默认值, 取值的默认值
existValue = GetDefaultValue(fd)
}
// 输入值和已经存在的值一致, 就无需设置了
if existValue == value {
return true
}
}
if fv == nil {
fv = self.addValue(fd)
}
fv.value = value
return true
}