我正在使用“Go 的 Google APIs 客户端库”(https://github.com/googleapis/google-api-go-client),它在支持 Slides API 时存在问题,其中从零开始的索引请求属性是必需,但结构定义表明omitempty
,因此省略了零值。我想分叉并修改此代码以删除这些omitempty
值。
具体代码在这里:
https://github.com/googleapis/google-api-go-client/blob/master/slides/v1/slides-gen.go#L4060-L4069
type Range struct {
// EndIndex: The optional zero-based index of the end of the
// collection.
// Required for `FIXED_RANGE` ranges.
EndIndex int64 `json:"endIndex,omitempty"`
// StartIndex: The optional zero-based index of the beginning of the
// collection.
// Required for `FIXED_RANGE` and `FROM_START_INDEX` ranges.
StartIndex int64 `json:"startIndex,omitempty"`
我已经在issue 433发布了这个主题,但我也想分叉和修改代码来克服这个问题。
尝试分叉和修改此代码时遇到以下问题。
首先,它只希望使用以下包定义注释使用其原始包名称导入。
package slides // import "google.golang.org/api/slides/v1"
尝试使用分叉时,此注释会导致以下错误:
code in directory /path/to/fork/google-api-go-client/slides/v1 expects import "google.golang.org/api/slides/v1"
从包定义行中删除注释允许加载包,但随后遇到以下错误,表明需要内部库。
use of internal package google.golang.org/api/internal/gensupport not allowed
有没有办法分叉和修改这段代码?
更新
我能够通过 Clive Makamara hereinternal
的以下内容克服包装问题。
$ ln -s /path/to/fork/google-api-go-client $GOPATH/google.golang.org/api
不幸的是,这并不能完全解决问题,因为其他范围类型需要省略字段,从而导致以下错误:
googleapi: Error 400: Invalid requests[5].createParagraphBullets: The textRange startIndex must not be specified for range type ALL, badRequest
由于某些范围类型需要StartIndex
而其他类型要求它不存在,因此似乎可能需要使用单独的范围结构。
我目前的解决方法是按原样使用客户端,但添加一个小字体大小的换行前缀,这样我就不必更新从索引 0 开始的文本范围。