# bintangstilllerning/basic_golang architecture

> Architecture diagram of the GitHub repository bintangstilllerning/basic_golang, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bintangstilllerning/basic_golang
- Repository: https://github.com/bintangstilllerning/basic_golang

## Overview

This repository is a collection of independent Go learning examples, not a single application: each directory contains a separate program illustrating a language feature. The clearest user-to-result flow is the UangMerah example, which reads an amount, computes and formats a discounted value, then prints it. Other sampled examples demonstrate concepts such as collections, pointers, interfaces, callbacks, and panic recovery. The README gives no further product description, and unsampled examples are represented only where their paths and topics are clear from the tree.

Main entry points: [`golang/UangMerah/hitung_persenan_umer.go`](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/UangMerah/hitung_persenan_umer.go) (Discount calculator), [`golang/variadic-function/variadic.go`](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/variadic-function/variadic.go) (Variadic sum), [`golang/anonymous-function/anonymousfunction.go`](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/anonymous-function/anonymousfunction.go) (Blacklist callback), [`golang/function-asparameter/function_parameter.go`](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/function-asparameter/function_parameter.go) (Function parameter)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_money["Money example"]
  node_money_app["Discount calculator"]
  node_discount["Discount calculation"]
  node_format["Rupiah formatting"]
end

subgraph group_functions["Functions and control"]
  node_variadic["Variadic sum<br/>[variadic.go]"]
  node_anonymous["Blacklist callback"]
  node_parameter["Function parameter"]
  node_panic["Panic recovery<br/>[panic.go]"]
end

subgraph group_language["Language examples"]
  node_array["Arrays<br/>[array.go]"]
  node_slice["Slices<br/>[slice.go]"]
  node_map["Maps<br/>[map.go]"]
  node_pointer["Pointers<br/>[pointer.go]"]
  node_interface["Interfaces<br/>[interface.go]"]
  node_comparison["Comparisons"]
  node_factorial["Loop factorial<br/>[factorial_loop.go]"]
  node_hello["Hello world<br/>[helloworld.go]"]
end

node_user(("User"))
node_terminal(("Terminal output"))

node_user -->|"enters amount"| node_money_app
node_money_app -->|"calculates discount"| node_discount
node_money_app -->|"formats result"| node_format
node_money_app -->|"prints result"| node_terminal
node_user -->|"runs example"| node_variadic
node_user -->|"runs example"| node_anonymous
node_user -->|"runs example"| node_parameter
node_user -->|"runs example"| node_panic
node_user -->|"runs example"| node_array
node_user -->|"runs example"| node_slice
node_user -->|"runs example"| node_map
node_user -->|"runs example"| node_pointer
node_user -->|"runs example"| node_interface
node_user -->|"runs example"| node_comparison
node_user -->|"runs example"| node_factorial
node_user -->|"runs example"| node_hello
node_variadic -->|"prints sum"| node_terminal
node_anonymous -->|"prints verdict"| node_terminal
node_parameter -->|"prints result"| node_terminal
node_panic -->|"prints status"| node_terminal
node_array -->|"prints values"| node_terminal
node_slice -->|"prints values"| node_terminal
node_map -->|"prints values"| node_terminal
node_pointer -->|"prints values"| node_terminal
node_interface -->|"prints greeting"| node_terminal
node_comparison -->|"prints comparisons"| node_terminal

click node_money_app "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/UangMerah/hitung_persenan_umer.go"
click node_discount "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/UangMerah/hitung_persenan_umer.go"
click node_format "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/UangMerah/hitung_persenan_umer.go"
click node_variadic "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/variadic-function/variadic.go"
click node_anonymous "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/anonymous-function/anonymousfunction.go"
click node_parameter "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/function-asparameter/function_parameter.go"
click node_panic "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/panic/panic.go"
click node_array "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/array/array.go"
click node_slice "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/tipedataslice/slice.go"
click node_map "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/map/map.go"
click node_pointer "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/pointer/pointer.go"
click node_interface "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/interface/interface.go"
click node_comparison "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/perbandingandata/perbandingandata.go"
click node_factorial "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/factorial-loop/factorial_loop.go"
click node_hello "https://github.com/bintangstilllerning/basic_golang/blob/main/golang/helloworld/helloworld.go"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_money_app,node_discount,node_format,node_user toneBlue
class node_variadic,node_anonymous,node_parameter,node_panic toneAmber
class node_array,node_slice,node_map,node_pointer,node_interface,node_comparison,node_factorial,node_hello toneMint
class node_terminal toneIndigo
```

## Components

### Money example

- [Discount calculator](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/UangMerah/hitung_persenan_umer.go): `golang/UangMerah/hitung_persenan_umer.go`
- [Discount calculation](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/UangMerah/hitung_persenan_umer.go): `golang/UangMerah/hitung_persenan_umer.go`
- [Rupiah formatting](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/UangMerah/hitung_persenan_umer.go): `golang/UangMerah/hitung_persenan_umer.go`

### Functions and control

- [Variadic sum](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/variadic-function/variadic.go): `golang/variadic-function/variadic.go`
- [Blacklist callback](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/anonymous-function/anonymousfunction.go): `golang/anonymous-function/anonymousfunction.go`
- [Function parameter](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/function-asparameter/function_parameter.go): `golang/function-asparameter/function_parameter.go`
- [Panic recovery](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/panic/panic.go): `golang/panic/panic.go`

### Language examples

- [Arrays](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/array/array.go): `golang/array/array.go`
- [Slices](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/tipedataslice/slice.go): `golang/tipedataslice/slice.go`
- [Maps](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/map/map.go): `golang/map/map.go`
- [Pointers](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/pointer/pointer.go): `golang/pointer/pointer.go`
- [Interfaces](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/interface/interface.go): `golang/interface/interface.go`
- [Comparisons](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/perbandingandata/perbandingandata.go): `golang/perbandingandata/perbandingandata.go`
- [Loop factorial](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/factorial-loop/factorial_loop.go): `golang/factorial-loop/factorial_loop.go`
- [Hello world](https://github.com/bintangstilllerning/basic_golang/blob/main/golang/helloworld/helloworld.go): `golang/helloworld/helloworld.go`

### Other components

- **User**
- **Terminal output**

## Connections

- User → Discount calculator: enters amount
- Discount calculator → Discount calculation: calculates discount
- Discount calculator → Rupiah formatting: formats result
- Discount calculator → Terminal output: prints result
- User → Variadic sum: runs example
- User → Blacklist callback: runs example
- User → Function parameter: runs example
- User → Panic recovery: runs example
- User → Arrays: runs example
- User → Slices: runs example
- User → Maps: runs example
- User → Pointers: runs example
- User → Interfaces: runs example
- User → Comparisons: runs example
- User → Loop factorial: runs example
- User → Hello world: runs example
- Variadic sum → Terminal output: prints sum
- Blacklist callback → Terminal output: prints verdict
- Function parameter → Terminal output: prints result
- Panic recovery → Terminal output: prints status
- Arrays → Terminal output: prints values
- Slices → Terminal output: prints values
- Maps → Terminal output: prints values
- Pointers → Terminal output: prints values
- Interfaces → Terminal output: prints greeting
- Comparisons → Terminal output: prints comparisons
