# Go Design Patterns (Go) > Singleton, Factory, Builder, Strategy, Decorator, Adapter, functional options, SOLID - 24 pertanyaan wawancara - Senior - [Pertanyaan Wawancara: Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara.md) ## 1. Apa keuntungan utama dari pattern Functional Options di Go? **Jawaban** Pattern Functional Options memungkinkan pembuatan API yang dapat dikonfigurasi dengan parameter opsional tanpa melakukan overloading pada constructor. Pattern ini menghindari banyak constructor dengan signature berbeda dan menyediakan API yang extensible serta mudah dibaca. Pattern ini idiomatic di Go karena memanfaatkan first-class function dan menghindari nilai default yang ambigu. ## 2. Pendekatan apa yang direkomendasikan untuk mengimplementasikan pattern Singleton di Go? **Jawaban** Di Go, pattern Singleton idealnya diimplementasikan dengan sync.Once yang menjamin inisialisasi thread-safe dan lazy initialization. Pendekatan ini menghindari mutex manual dan double-checked locking yang rawan kesalahan. sync.Once memastikan bahwa sebuah fungsi dieksekusi hanya sekali bahkan dengan banyak goroutine yang berjalan bersamaan. ## 3. Prinsip SOLID mana yang mendorong penggunaan interface di Go? **Jawaban** Prinsip Dependency Inversion menyatakan bahwa modul tingkat tinggi tidak boleh bergantung pada modul tingkat rendah, melainkan pada abstraksi (interface). Di Go, ini berarti menerima interface dan mengembalikan tipe konkret. Prinsip ini memudahkan pengujian (mocking), decoupling, dan maintainability kode. ## 21 pertanyaan lagi tersedia - Bagaimana cara mengimplementasikan pattern Factory di Go secara idiomatic? - Apa peran utama dari Adapter pattern? Daftar gratis: https://sharpskill.dev/id/login ## Topik wawancara Go lainnya - [Dasar-Dasar Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-basics.md): 25 pertanyaan, Junior - [Struktur Data Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-data-structures.md): 20 pertanyaan, Junior - [Interface Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-interfaces.md): 18 pertanyaan, Junior - [Penanganan Error](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/error-handling.md): 20 pertanyaan, Junior - [Dasar-Dasar Goroutine](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/goroutines-basics.md): 20 pertanyaan, Junior - [Channels](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/channels.md): 22 pertanyaan, Junior - [Go Modules](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-modules.md): 18 pertanyaan, Mid-Level - [Server HTTP](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/http-server.md): 24 pertanyaan, Mid-Level - [Klien HTTP](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/http-client.md): 18 pertanyaan, Mid-Level - [Enkoding JSON](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/json-encoding.md): 20 pertanyaan, Mid-Level - [Database/SQL](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/database-sql.md): 22 pertanyaan, Mid-Level - [Paket context](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/context-package.md): 20 pertanyaan, Mid-Level - [Testing](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/testing.md): 22 pertanyaan, Mid-Level - [Pola Concurrency](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/concurrency-patterns.md): 24 pertanyaan, Mid-Level - [Primitif Sinkronisasi](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/sync-primitives.md): 22 pertanyaan, Mid-Level - [Framework web Go](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/go-web-frameworks.md): 20 pertanyaan, Mid-Level - [Desain API REST](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/rest-api-design.md): 20 pertanyaan, Mid-Level - [gRPC](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/grpc.md): 22 pertanyaan, Mid-Level - [Reflection](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/reflection.md): 20 pertanyaan, Senior - [Manajemen Memori](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/memory-management.md): 24 pertanyaan, Senior - [Optimasi Performa](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/performance-optimization.md): 22 pertanyaan, Senior - [Generics](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/generics.md): 20 pertanyaan, Senior - [Microservices](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/microservices.md): 24 pertanyaan, Senior - [Keamanan dan Autentikasi](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/security-authentication.md): 24 pertanyaan, Senior - [Docker & Containerization](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/docker-containerization.md): 20 pertanyaan, Senior - [Kubernetes Basics](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/kubernetes-basics.md): 22 pertanyaan, Senior - [Go Tingkat Lanjut](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/advanced-go.md): 20 pertanyaan, Senior - [Pengembangan CLI](https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/cli-development.md): 20 pertanyaan, Senior --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/id/technologies/go/pertanyaan-wawancara/design-patterns