当我命名一个功能已设置/更新状态为setSth
的方法时,我发现代码中至少出现了三个updateSth
,updateSth
和this
对象
我很困惑这个选择。
我搜索golang项目的源代码,发现有很多人使用setSth
。
0项使用“changeSth”
使用“updateSth”的8个项目
text/tabwriter/tabwriter.go 380:func (b *Writer) updateWidth() { go/ast/commentmap.go 246:func (cmap CommentMap) Update(old, new Node) Node { container/heap/example_pq_test.go 54:func (pq *PriorityQueue) update(item *Item, value string, priority int) { expvar/expvar.go 129:func (v *Map) updateKeys() { encoding/gob/encode.go 101:func (state *encoderState) update(instr *encInstr) { crypto/cipher/gcm.go 236:func (g *gcm) updateBlocks(y *gcmFieldElement, blocks []byte) { 247:func (g *gcm) update(y *gcmFieldElement, data []byte) { index/suffixarray/qsufsort.go 145:func (x *suffixSortable) updateGroups(offset int) {
使用“setSth”的214项
net / fd_plan9.go:214:func(fd * netFD)setReadDeadline(t time.Time)
错误{net / fd_plan9.go:218:func(fd * netFD)setWriteDeadline(t
time.Time)错误{mime / multipart / writer.go:43:func(w * Writer)
SetBoundary(边界字符串)错误{log / log.go:218:func(l * Logger)
SetFlags(flag int){log / log.go:232:func(l * Logger)SetPrefix(prefix
string){bufio / scan.go:198:func(s * Scanner)setErr(错误错误){
archive / zip / struct.go:185:func(h * FileHeader)SetModTime(t time.Time)
{archive / zip / struct.go:223:func(h * FileHeader)SetMode(mode
os.FileMode){expvar / expvar.go:60:func(v * Int)Set(value int64){
expvar / expvar.go:86:func(v * Float)Set(value float64){
expvar / expvar.go:147:func(v * Map)Set(key string,av Var){
expvar / expvar.go:228:func(v * String)Set(value string){
testing / benchmark.go:97:func(b * B)SetBytes(n int64){b.bytes = n}
testing / benchmark.go:430:func(b * B)SetParallelism(p int){
image / image.go:92:func(p * RGBA)Set(x,y int,c color.Color){
image / image.go:104:func(p * RGBA)SetRGBA(x,y int,c color.RGBA){
image / image.go:196:func(p * RGBA64)设置(x,y int,c color.Color){
答案 0 :(得分:3)
密钥保持一致:
UpdateXXX()
"在一个包中,坚持下去。 SetXXX()
。话虽如此,Get
和Set
在Go中并不惯用。当然not for a Getter,如果需要,可以使用setter函数调用SetXXX()
,如" how to set and get fields in golang structs?"。
另一方面,Update()
可能有特定目的。
注意:没有" update()
"您在go源中找到的方法将被导出(公共)。