RS
если
ok == false, тогда и p == nilSize: a a a
RS
ok == false, тогда и p == nilRS
AK
p.Age++
some.Family.Updated = time.Now()
BT
ok == false, тогда и p == nilRS
p.Age++
some.Family.Updated = time.Now()
s
DP
? существует лишь в моих фантазиях.? <accessor statement> равен zero-value, false если accessor statement упал бы в segfault, так-же по сути как устроен access к мапе, только универсально распрастраняясь на все nullable типы.? - как, например, в groovy - был бы очень кстатиRS
if some != nil && some.Family != nil && some.Family.Father != nil {
some.Family.Father.Age++
some.Family.Updated = time.Now()
}if p, ok := ? some.Family.Father; ok && p != nil {
p.Age++
some.Family.Updated = time.Now()
}AK
RS
BT
if some != nil && some.Family != nil && some.Family.Father != nil {
some.Family.Father.Age++
some.Family.Updated = time.Now()
}if p, ok := ? some.Family.Father; ok && p != nil {
p.Age++
some.Family.Updated = time.Now()
}AP
foo[«bar»][«baz»] запаникует на [«baz»], если foo[«bar»] – nilRS
.? - как, например, в groovy - был бы очень кстатиpointer / interface ставим if == nilmap ставим if _, ok := m[k]; !okslice/array ставим if index > len(a)-1RS
ok := assert(some.Family.Father)s
DP
pointer / interface ставим if == nilmap ставим if _, ok := m[k]; !okslice/array ставим if index > len(a)-1RS
v, ok := ? map[“key”]
v, ok := ? slice[2]
v, ok := ? <-channel
v, ok := ? foo.Bar.Baz
v, ok := ? foo.Bar.Baz[“key”][10].ValueRS
? = try read, return zero-value, false if failed