# Belajar Dasar Golang
## Persiapan
1. Install Golang: Unduh dan instal Golang sesuai dengan sistem operasi yang digunakan. Kunjungi situs resmi Go untuk memulai unduhan: https://golang.org/dl/.
2. Pilih IDE (VS Code).
3. database.
## Started
### inisialisasi project
```
go mod init "nama project"
```
Perintah "go mod init" adalah salah satu perintah utama pada Golang yang digunakan untuk menginisialisasi sebuah proyek Go module baru.
Dalam perintah ini, "nama project" adalah parameter yang diberikan untuk menentukan nama proyek yang akan digunakan pada Go module yang baru. Parameter ini harus sesuai dengan nama direktori yang digunakan sebagai direktori kerja saat menjalankan perintah ini.
### install gorm
```
go get -u gorm.io/gorm
```
Perintah "go get -u gorm.io/gorm" digunakan untuk mengunduh dan memperbarui paket Golang bernama "gorm" dari repositori resmi Golang. "-u" dalam perintah ini berarti untuk memperbarui paket jika sudah ada versi terbaru.
"Gorm" adalah sebuah ORM (Object Relational Mapping) atau pustaka pemetaan objek-ke-relasional untuk Golang. Pustaka ini membantu memudahkan pengembang dalam berinteraksi dengan database secara objek-ke-relasional.
### install driver database
```
go get -u gorm.io/driver/mysql
```
Perintah "go get -u gorm.io/driver/mysql" digunakan untuk mengunduh dan memperbarui paket driver MySQL untuk GORM (Go Object Relational Mapping).
Pustaka driver MySQL ini memungkinkan GORM untuk berinteraksi dengan database MySQL. Setelah paket terunduh dan terinstal pada sistem Anda, Anda dapat menggunakannya di dalam proyek Golang yang menggunakan GORM dan MySQL dengan menambahkan "import gorm.io/driver/mysql" pada file Golang yang diperlukan
or
```
go get -u gorm.io/driver/sqlserver
```
Perintah "go get -u gorm.io/driver/sqlserver" digunakan untuk mengunduh dan memperbarui paket driver SQL Server untuk GORM (Go Object Relational Mapping).
Pustaka driver SQL Server ini memungkinkan GORM untuk berinteraksi dengan database SQL Server. Setelah paket terunduh dan terinstal pada sistem Anda, Anda dapat menggunakannya di dalam proyek Golang yang menggunakan GORM dan SQL Server dengan menambahkan "import gorm.io/driver/sqlserver" pada file Golang yang diperlukan.
### install framework
```
go get github.com/gofiber/fiber/v2
```
Gofiber adalah sebuah framework web yang ditulis dalam bahasa pemrograman Golang yang dapat membantu pengembang untuk membangun aplikasi web dengan cepat dan efisien. Framework ini dikembangkan untuk memberikan performa yang optimal dan mudah digunakan.
Untuk menggunakan framework Gofiber pada proyek Golang, kita dapat mengunduh dan menginstalnya melalui perintah "go get github.com/gofiber/fiber/v2". Perintah ini akan mendownload dan memasang versi terbaru dari Gofiber pada sistem lokal Anda.
### buat file main.go
isi code main.go
```
package main
import (
"belajar-go-dasar/config"
"belajar-go-dasar/database"
"belajar-go-dasar/routers"
"github.com/gofiber/fiber/v2"
"github.com/gofiber/fiber/v2/middleware/cors"
)
func main() {
// database connect
database.Connect()
app := fiber.New()
// set cors
app.Use(cors.New(cors.Config{
AllowOrigins: config.AllowOrigins(),
AllowHeaders: config.AllowHeaders(),
AllowMethods: config.AllowMethods(),
AllowCredentials: true,
}))
// router
routers.Setup(app)
// get port
port := config.Env("PORT")
// run
app.Listen(":" + port)
}
```
### buat file .env
install paket GoDotEnv
```
go get github.com/joho/godotenv
```
GoDotEnv adalah sebuah paket Golang yang digunakan untuk membaca variabel lingkungan (environment variables) dari sebuah file .env. Variabel lingkungan ini dapat berisi informasi seperti kunci API, nama pengguna, kata sandi, dan konfigurasi lainnya yang diperlukan untuk menjalankan aplikasi.
Dengan menggunakan paket GoDotEnv, pengembang dapat memisahkan konfigurasi aplikasi dari kode sumber dan menyimpannya dalam file .env, yang dapat disimpan secara aman di repository dan diabaikan dari kontrol versi. Hal ini memudahkan dalam mengelola konfigurasi aplikasi untuk berbagai lingkungan seperti pengembangan, produksi, atau pengujian.
## Cek repo github
[https://github.com/toniismail12/belajar-go-dasar](https://github.com/toniismail12/belajar-go-dasar)
## Golang Naming convention (Aturan penamaan)
[https://github.com/toniismail12/Golang-Naming-convention](https://github.com/toniismail12/Golang-Naming-convention)