Abstract
Denne oppgaven utforsker hvordan en mekanisme for fleksibel gjenbruk av deklarasjoner, kalt Pakkemal-mekamismen ("Package Templates"), kan utspille seg i programmeringsspråket Go. Pakkemal-mekanismen er opprinnelig definert for språk som bygger på objektorientert programmering, og har som hensikt å tilpasse og utvide samlinger av klasser ved kompilering. Blant annet tilbyr mekanismen funksjonalitet som å endre navn, utvide de deklarerte klassene direkte, sammenfletting av klasser og overskriving av metode-implementasjoner. Go skiller seg på en rekke områder fra språk som hovedsakelig bygger på objektorientert programmering, som eksempelvis Java. Go har for eksempel ikke klasser slik som Java, og har på enkelte områder en annen tilnærming til typesjekking. Pakkemal-mekanismen har hovedsakelig fram til nå kun vært utforsket i språk som ligner Java, og vi vil dermed håndtere noen nye og nokså uutforskede aspekter når vi skal se på kombinasjonen av Pakkemal-mekanismen og Go. Under arbeidet med denne masteroppgaven har vi utviklet en preprosessor som støtter Pakkemal-konsepter i Go, og fungerer som en slags prototype. Som en følge av at Go er forskjellig fra typiske objektorienterte språk, så har en del av arbeidet innebåret å tilpasse de ulike Pakkemal-konseptene slik at det passer bedre til språket. Det resulterende språket, altså kombinasjonen av Go og Pakkemal-mekanismen, tilbyr blant annet funksjonalitet som å "dypt" endre navn på deklarasjoner, utvide med nye attributter og funksjonalitet, sammenflette typer, overskrive funksjons-implementasjoner, samt en mekanisme for generiske typeparametere.