Едно нещо, което трябва да имате предвид и нещо, което трябва да се изясни, е, че Go не е обектно-ориентиран език. Въпреки че Go осигурява групирането на данни в структури и дава на програмиста механизъм за дефиниране на методи, свързани с тези структури, това е ясно различна концепция от това, което мислим за „обект“ в други езици.

Може да е полезно да напомним на всички, че не трябва да насърчаваме разработчиците да използват обектно-ориентирани дизайнерски концепции, а по-скоро да предоставяме помощ на програмисти, идващи от обектно-ориентирани езици, за да научат Go начина на правене на нещата.

Един от най-честите въпроси, които програмистите с OO опит имат, е „как да инициализирам структура с номинални стойности, ако езикът не предоставя механизъм за конструктор?“

Отговорът е лесен – напишете своя собствена! Много пакети имат функции, които могат да се считат за „конструктори“, които ще изградят структура за вас със здрави, готови за използване стойности. Например, погледнете пакета байтове и типа данни буфер. Можете или да инициализирате празен буфер, като изрично инициализирате буферна структура, или като извикате NewBuffer и подадете съдържанието на вече съществуващ срез — това ви позволява да създадете валиден, готов за четене/запис буфер, като използвате среза като първоначално съдържание .