s
? = try read, return zero-value, false if failed != nil которая даст trueSize: a a a
s
? = try read, return zero-value, false if failed != nil которая даст trueAK
v, ok := ? map[“key”]
v, ok := ? slice[2]
v, ok := ? <-channel
v, ok := ? foo.Bar.Baz
v, ok := ? foo.Bar.Baz[“key”][10].ValueRS
type Val struct { Value float64 }
type Bar struct { Baz map[string][]Val }
type Foo struct { Bar *Bar }
var m map[string]string
var s []int64
var c chan struct{}
var foo *Foo
v, ok := ? m[“key”] // v string
v, ok := ? s[2] // v int64
v, ok := ? <-c // v struct{}
v, ok := ? foo.Bar // v *Bar
v, ok := ? foo.Bar.Baz // map[string]Val
v, ok := ? foo.Bar.Baz[“key”][10].Value // v float64RS
!= nil которая даст trues
Muz(nil) и делает if mz != nil { mz.Method()}RS
Muz(nil) и делает if mz != nil { mz.Method()}RS
type Greeter interface {
Greet(name string) string
}
type Bar struct {
G Greeter
}
type Foo struct {
B *Bar
}
s := Foo{B: &Bar{}}
v := ? s.B.G
if v != nil {
v.Greet("Joe")
}
что будет в этом кейсе?nil, следственно в if не зайдётRS
var v Greeter
if s.B != nil {
v = s.B.G
}v := ? s.B.GRS
NP
[]byte(…) от []byte{…}?NP
DP
NP
T(…) определена для всех встроенных T?DP
DP
NP
AK