本文整理汇总了Golang中go/ast.BasicLit.End方法的典型用法代码示例。如果您正苦于以下问题:Golang BasicLit.End方法的具体用法?Golang BasicLit.End怎么用?Golang BasicLit.End使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类go/ast.BasicLit
的用法示例。
在下文中一共展示了BasicLit.End方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: OverwriteStructTag
// OverwriteStructTag overwrites the struct tag completely
func OverwriteStructTag(tag *ast.BasicLit, tagName string, offset *int, data []byte) []byte {
val := tag.Value
start := int(tag.Pos()) + *offset - 1
end := int(tag.End()) + *offset - 1
length := len(val)
oldLength := end - start
// Delete the original tag
data = DeleteRange(data, start, end)
var newTag string
if options.AppendMode == Append {
oldTag := removeIndex(removeIndex(val, 0), len(val)-2)
newTag = fmt.Sprintf("`%s:\"%s\" %s`", options.Tag, tagName, oldTag)
} else {
newTag = fmt.Sprintf("`%s:\"%s\"`", options.Tag, tagName)
}
numSpaces := len(newTag) - oldLength - 1
var spaces string
// Can't pass a negative number to strings.Repeat()
// it will cause a panic because it passes this number directly to make()
if numSpaces > 0 {
spaces = strings.Repeat(" ", numSpaces)
}
newTag = fmt.Sprintf("%s%s", spaces, newTag)
localOffset := len(newTag) - length
*offset += localOffset
// Insert new tag
data = Insert(data, []byte(newTag), start)
return data
}