# Go Guidance

Mempelajari pemrograman golang untuk pemula. Materi akan dibahas step by step dari basic sampai mahir. Ruang lingkup pembelajaran meliputi :

## [Basic](/golang-fundamental/01-basic.md)

* Install golang
* Hello world
* Package, type, constanta, variable, function
* Flow controll : if, else, switch, for, defer
* Array : array, slice, map

## [Struktur Data](/golang-fundamental/02-struktur-data.md)

* struct
* Method
* Interface
* Encapsulation, inheritance and polymorphism

## [Konkurensi](/golang-fundamental/03-konkurensi.md)

* Go routine
* Channel
* Channel dengan buffer
* Range dan close
* Select
* Select default
* Select timeout
* Sync Mutex
* Handling sync group routine

## Design Pattern

* Singleton
* Abstract factory
* Dependency injection
* [Concurrency pattern](/design-pattern/03-concurrency-pattern.md)
  * [Worker Pool](/design-pattern/03-concurrency-pattern/04-worker-pool.md)
  * [Future / Promise](/design-pattern/03-concurrency-pattern/08-future-promise.md)
  * [Rate Limit](/design-pattern/03-concurrency-pattern/09-rate-limit.md)
  * [Semaphore](https://github.com/jacky-htg/golang-essentials/blob/master/02-design-pattern/10-sempahore.md)
  * [Single Flight](/design-pattern/03-concurrency-pattern/12-single-flight.md)

## Build API Framework

Step by step membuat golang API framework, baik rest api maunpun grpc, baik monolith maupun microservices, baik monorepo maupun multirepo.

* [Start up](/build-rest-api-framework/01-start-up.md)
* [Shutdown](/build-rest-api-framework/02-shutdown.md)
* [Json](/build-rest-api-framework/03-json.md)
* [Database](/build-rest-api-framework/04-database.md)
* [Clean architecture](/build-rest-api-framework/05-clean-architecture.md)
* [Configuration](/build-rest-api-framework/06-configuration.md)
* [Fatal](/build-rest-api-framework/07-fatal.md)
* [Bootstrap](/build-rest-api-framework/08-bootstrap.md)
* [Logging](/build-rest-api-framework/09-logging.md)
* [Routing](/build-rest-api-framework/10-routing.md)
* [CRUD](/build-rest-api-framework/11-crud.md)
* [Standard Response](/build-rest-api-framework/12-standard-response.md)
* [Error handler](/build-rest-api-framework/error-handler.md)
* [Unit testing](/build-rest-api-framework/unit-testing.md)
* [API testing](/build-rest-api-framework/api-testing.md)
* [Context](/build-rest-api-framework/context.md)
* [Validation](/build-rest-api-framework/validation.md)
* [Middleware](/build-rest-api-framework/middleware.md)
* [Token](/build-rest-api-framework/token.md)
* [RBAC](/build-rest-api-framework/rbac.md)

## Build gRPC API Framework

* [Protocol Buffer](/grpc-framework/grpc-protobuf.md)
* [makefile](/grpc-framework/makefile.md)
* [grpc server](/grpc-framework/grpc-server.md)
* [Config](/grpc-framework/grpc-config.md)
* [Database](/grpc-framework/grpc-database.md)
* [Routing](/grpc-framework/grpc-routing.md)
* [Clean Architecture](/grpc-framework/grpc-clean-architecture.md)
* [gRPC Client](/grpc-framework/grpc-client.md)
* [Tracing](/grpc-framework/grpc-tracing.md)
* [Caching](/grpc-framework/grpc-caching.md)
* [Testing](/grpc-framework/grpc-testing.md)

## Referensi Tambahan

* [Buku "The Go Programing Language"](https://www.gopl.io/)
* [Dokumentasi Resmi Golang](https://golang.org/doc/)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://golang-microservices.rijalasepnugroho.com/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
