0Pricing
Go Academy · Pelajaran

Paket: Menata Kode Go

Deklarasi paket, import, dan nama yang diekspor

Paket: Menata Kode Go adalah pelajaran Go Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Go Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Go Academy mencakup 4 pelajaran total.

Apa Itu Paket?

Setiap berkas sumber Go termasuk dalam sebuah paket. Nama paket muncul di bagian atas setiap berkas. Paket mengelompokkan kode yang berkaitan dan mengatur visibilitas:

// file: math/calc.go
package math

// Exported — accessible from other packages (capital letter)
func Add(a, b int) int { return a + b }

// Unexported — package-private (lowercase)
func helper() int { return 42 }

Deklarasi Paket dan Jalur Impor

Nama paket (singkat) berbeda dari jalur impor (jalur modul/direktori lengkap):

// Import path: github.com/myapp/util/stringutil
// Package name: stringutil (last segment by convention)
package stringutil

func Reverse(s string) string {
    r := []rune(s)
    for i, j := 0, len(r)-1; i < j; i, j = i+1, j-1 {
        r[i], r[j] = r[j], r[i]
    }
    return string(r)
}

Mengimpor Paket

Gunakan import untuk memasukkan paket lain. Go mengharuskan semua impor digunakan:

package main

import (
    "fmt"                         // standard library
    "strings"                     // standard library
    "github.com/myapp/util/math"  // third-party or local
)

func main() {
    fmt.Println(strings.ToUpper("hello"))
    fmt.Println(math.Add(1, 2))
}

Pengenal yang Diekspor vs Tidak Diekspor

Pengenal yang diawali huruf kapital adalah diekspor (publik). Pengenal dengan huruf kecil tidak diekspor (khusus paket):

package server

// Exported: accessible from other packages
type Server struct {
    Addr    string   // exported field
    timeout int      // unexported field
}

// Exported method
func (s *Server) Start() error { return nil }

// Unexported helper
func (s *Server) listen() {}

Paket main dan Fungsi main

Paket main bersifat khusus — paket ini mendefinisikan program yang dapat dieksekusi. Fungsi main adalah titik masuknya:

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
    // Program starts here and ends here
}

// All other packages are libraries — no main() needed

Fungsi init()

Setiap paket dapat memiliki satu atau beberapa fungsi init() yang berjalan sebelum main(), secara otomatis dan sesuai urutan deklarasi:

package config

import "fmt"

var DB string

func init() {
    DB = "localhost:5432/mydb"
    fmt.Println("config package initialized")
}

// init runs once when the package is first imported
// Multiple init() functions per file/package are allowed

Impor Kosong untuk Efek Samping

Impor sebuah paket hanya untuk efek samping init()-nya dengan menggunakan pengenal kosong:

package main

import (
    "database/sql"
    _ "github.com/lib/pq"  // registers PostgreSQL driver via init()
)

func main() {
    db, err := sql.Open("postgres", "host=localhost dbname=test")
    _ = db
    _ = err
}

Impor dengan Alias

Ganti nama paket saat mengimpor untuk menghindari benturan nama atau agar lebih ringkas:

package main

import (
    "fmt"
    gomath "math"              // alias to avoid collision
    mymath "github.com/me/math"
)

func main() {
    fmt.Println(gomath.Sqrt(16))     // 4
    fmt.Println(mymath.Add(1, 2))    // 3
}

Konvensi Penamaan Paket

Konvensi penamaan paket Go:

  • Satu kata, singkat, dan menggunakan huruf kecil: http, json, fmt
  • Sesuaikan dengan nama direktori: util/stringutil/ → paket stringutil
  • Jangan gunakan garis bawah atau camelCase dalam nama paket
  • Hindari nama generik seperti util, common, helper
  • Nama paket merupakan bagian dari pengenal: lebih baik gunakan http.Client daripada httplib.HTTPClient

Impor Melingkar

Go TIDAK mengizinkan impor melingkar. Paket A tidak dapat mengimpor B jika B mengimpor A. Atasi dengan mengekstrak kode bersama ke paket ketiga:

// WRONG: A imports B, B imports A — compile error
// package a imports "myapp/b"
// package b imports "myapp/a"

// SOLUTION: extract shared types to package c
// package a imports "myapp/c"
// package b imports "myapp/c"
// No circular dependency

Pemeriksaan Singkat

Apa yang membuat sebuah pengenal diekspor dalam Go?

Ringkasan: Paket

Konsep utama paket:

  • Setiap berkas diawali dengan package name
  • Huruf kapital = diekspor (publik), huruf kecil = tidak diekspor (khusus paket)
  • Impor menggunakan jalur lengkap, gunakan nama paket singkat
  • init() berjalan otomatis sebelum main()
  • Impor kosong _ "pkg" hanya untuk efek samping
  • Impor melingkar tidak diizinkan

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Paket: Menata Kode Go” gratis?

Ya — teks lengkap “Paket: Menata Kode Go” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Go Academy, upgrade ke CoddyKit PRO. Kursus Go Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Paket: Menata Kode Go”?

Deklarasi paket, import, dan nama yang diekspor Kamu berlatih Go Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Go Academy?

Tidak diperlukan pengalaman sebelumnya. Go Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Paket: Menata Kode Go” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Go Academy ini?

Ya. Setiap pelajaran Go Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Paket: Menata Kode Go
  2. Modul Go dengan go mod
  3. Menambahkan Dependensi Eksternal
  4. Paket Internal dan Ruang Kerja
← Kembali ke Go Academy