Hva er en klasse og et objekt?
Før vi kan svare på om Gå har klasser og gjenstander , må vi først definere hva de er i sammenheng med programmering. EN klasse er en modell eller mal som skisserer egenskapene og handlingene til en samling av gjenstander . An gjenstand er opprettet som en forekomst av en klasse når minnet er tildelt og dets tilstand initialiseres ved kjøring. Klasser og gjenstander er nøkkelbyggesteiner i klassiske objektorienterte programmeringsspråk som Java, C++ eller C# som støtter polymorfisme, arv og innkapsling.
Strukturer i Golang
I Gå, klasser erstattes av brukerdefinerte datatyper kalt strukturer. Disse strukturer kombinere flere elementer eller egenskaper og tillate inkludering av metoder – funksjoner som opererer på forekomster av struktur. Samtidig som strukturer dele noen likheter med klasser som arv og grensesnitt, er det også bemerkelsesverdige forskjeller. For eksempel, Gå har ikke en konstruktør – en unik metode som initialiserer et objekts tilstand ved opprettelse, slik det vanligvis finnes i klassebaserte språk.
Grensesnitt i Golang
Gå har et konsept som er som gjenstander : grensesnitt . An grensesnitt er en samling metoder som beskriver en atferd eller funksjonalitet, men uten å spesifisere hvordan den implementeres. Grensesnitt gi en måte å oppnå polymorfisme på Gå , slik at forskjellige typer kan brukes om hverandre hvis de tilfredsstiller grensesnittets krav. Dette er et kraftig konsept som muliggjør Gå for å oppnå en høy grad av fleksibilitet og utvidbarhet uten å ofre ytelse eller enkelhet.
Bruk av strukturer og grensesnitt i Golang
Følgende eksempel illustrerer bruken av struktur og grensesnitt i Gå .
hovedpakke
import 'fmt'
type menneske struktur {
navnestreng
}
type Arbeider struktur {
Menneskelig
jobbstreng
}
func ( h Menneske ) Info ( ) {
fmt. Printf ( 'Jeg er s \n ' , h. Navn )
}
func ( w Arbeider ) Info ( ) {
fmt. Printf ( 'Jeg er %s. Jeg er en %s. \n ' , I. Navn , I. jobb )
}
type Person-grensesnitt {
Info ( )
}
funcmain ( ) {
John := Arbeider { Menneskelig { 'John' } , 'arbeider' }
Doe := Menneskelig { 'Doe' }
John. Info ( )
Doe. Info ( )
var personlig
Jeg = John
Jeg. Info ( )
Jeg = Doe
Jeg. Info ( )
}
Vi har laget to strukturer , Menneskelig og Arbeider , i koden ovenfor. Deretter opprettes funksjonene som skriver ut meldingene. De strukturer kalles i hoved- () funksjonen til Person grensesnitt . Vi kan se at Info metoden er implementert av både Arbeider og Menneskelig , derfor variabelen i med typen Person grensesnittet vil fungere korrekt og skrive ut utdataene.
Produksjon
Gå har en unik tilnærming til innkapsling . Innkapsling oppnås i konvensjonell objektorientert programmering ved å gjøre felt private og gjøre dem tilgjengelige gjennom getter- og settermetoder. I Gå , innkapsling oppnås ved å bruke små feltnavn, som bare er synlige innenfor samme pakke. Denne strategien er mer grei og entydig, noe som gjør det enklere å forstå hvordan koden oppfører seg og reduserer muligheten for uforutsette bivirkninger.
Gå gir en forenklet form for polymorfisme . Objektorientert programmering har en funksjon som kalles polymorfisme som gjør at objekter fra forskjellige klasser kan behandles som forekomster av samme klasse. Gå gir ikke den konvensjonelle klassebaserte arven, men den støtter grensesnitt, som kan brukes til å spesifisere et sett med metoder som en struktur må implementere. Gå tilbyr også typepåstander, som lar programmerere undersøke innholdet til en grensesnittvariabel og få den underliggende konkrete verdien.
Konklusjon
Gå ikke har klasser eller gjenstander i klassisk forstand; i stedet bruker den strukturer og grensesnitt , som tilbyr sammenlignbar funksjonalitet på en mer enkel og lett måte. Gå har vunnet popularitet blant utviklere som prioriterer enkelhet, lesbarhet og ytelse ved å omfavne en annen filosofi og grammatikk. Selv om å bli kjent med Gå metodikk kan ta litt tid, dens karakteristiske egenskaper og design resulterer i mer effektiv og vedlikeholdbar kode.