In Golang structs are very powerful and common use. In previous article, I show you how to write a struct but this is not efficient way to write.
type Point struct{ X,Y int }
point := Point{1,2}
code.1.1
There are two types struct literals :
In first type, study above code. Programmer usually avoid this because it's difficult to remember about fields, it's should be in right order. Programmer use this in custom packages and smaller structs types.
In second type Programmer like very much , it's more powerful then previous type.
anim := GIF.gif{loopCount: nframes}
If any field value omit then that case value initialize with zero. Structs can also pass by reference [Pointers]. As you know, passing structs as a parameters with the help of pointers. Pointers create copy and use particular copy .
Structs Literals access through pointer.
p := &Point{1,2}
p := new (Point)
*p = Point{1,2}
Structs Comparable
We can also compare structs . "==" & "!=" are common operators for comparison. Structs can also comparable with other types , in that case maps are very helpful.
Embed Field and Anonymous :
Embed Field :
package main | |
import ("fmt") | |
type Point struct{ | |
X,Y int | |
} | |
type Circle struct{ | |
Center Point // embed structs-1 | |
Radius int | |
} | |
type Wheel struct{ | |
Circle Circle //embed structs-2 | |
Spokes int | |
} | |
func main(){ | |
var w Wheel | |
w.Circle.Center.X =2 | |
w.Circle.Center.Y =2 | |
w.Circle.Radius =3 | |
w.Spokes =3 | |
fmt.Println(w) | |
}
In embed field we can create a structure of any type that
structure is the field of next struct. In Wheel or circle you
can see this.
Anonymous Field:
type Circle struct {
Point
Radius int
}
type Wheel struct {
Circle
Spokes int
}
var w Wheel
w.X = 8 // equivalent to w.Circle.Point.X = 8
w.Y = 8 // equivalent to w.Circle.Point.Y = 8
w.Radius = 5 // equivalent to w.Circle.Radius = 5
w.Spokes = 20
Anonymous Field similar like embed field but there 's a great
difference. In anonymous field, field have a type but field
don't have any name. That's why we called them anonymous
field.
|
Comments
Post a Comment