Level Up Your Web Apps With Go



Download 3,66 Mb.
Pdf ko'rish
bet28/37
Sana01.05.2022
Hajmi3,66 Mb.
#600662
1   ...   24   25   26   27   28   29   30   31   ...   37
Bog'liq
level up your web apps with go

Embedded Types
Struct types are allowed to have other types embedded in them. This allows for a
level of object “inheritance”, although it’s not quite the same as classic object-ori-
ented inheritance. You embed a type by adding the type to a struct without a field
name. The struct then gains access to the embedded value and its methods:
type User struct {
Name string
}
Level Up Your Web Apps With Go
30


func (u User) IsAdmin() bool { return false }
func (u User) DisplayName() string {
return u.Name
}
type Admin struct {
User
}
func (a Admin) IsAdmin() bool { return true }
func (a Admin) DisplayName() string {
// Add [Admin] in front of the embedded user’s display name
return "[Admin] " + a.User.DisplayName()
}
func main() {
u := User{"Normal User"}
fmt.Println(u.Name) // Normal User
fmt.Println(u.DisplayName()) // Normal User
fmt.Println(u.IsAdmin()) // false
a := Admin{User{"Admin User"}}
fmt.Println(a.Name) // Admin User
fmt.Println(a.User.Name) // Admin User
fmt.Println(a.DisplayName()) // [Admin] Admin User
fmt.Println(a.IsAdmin()) // true
}
We can see here that the
User
type is straightforward, but the
Admin
type has an
embedded
User
. An instance of
Admin
is able to access the fields and methods of
the embedded
User
as if they were its own. We can see that when we print both the
Name
and
User.Name
at the start, they are the exact same thing.
The interesting part happens when we overwrite a method that exists on the embed-
ded type. We see this with the
DisplayName
method, where we’re able to prepend
a string to the embedded type’s
DisplayName
method.
Embedding types is very useful when implementing interfaces. If your type has an
embedded type that implements an interface, then your type automatically imple-
ments that interface too. This is because all the methods of the embedded type are
available on the type that embeds it, and the methods are what defines whether or
not a type implements an interface.
31
Go Types Explored



Download 3,66 Mb.

Do'stlaringiz bilan baham:
1   ...   24   25   26   27   28   29   30   31   ...   37




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish