Program nyata jarang berdiri di atas kode sendirian; ia memanfaatkan fungsi dari package lain, baik dari standard library maupun dari pihak ketiga. Mekanisme pemakaian tersebut bernama import: kita cantumkan path package pada import declaration, lalu seluruh identifier yang diekspornya dapat dipanggil dari kode kita. Pada chapter ini kita pelajari bentuk-bentuk import, mulai dari satu package, grouped import, import alias, sampai blank import, beserta satu aturan ketat yang sering menjegal pemula: import yang tidak terpakai adalah error.
Bentuk-Bentuk Import #
Untuk mengimpor satu package, kita memakai bentuk import diikuti path package dalam tanda kutip. Ketika kebutuhan bertambah, beberapa import sebaiknya dikelompokkan dalam satu deklarasi:
import (
"fmt"
"strings"
)Path fmt dan strings merujuk pada package standard library. Package pihak ketiga diimpor dengan path lengkapnya, misalnya github.com/spf13/cobra untuk framework CLI yang dibahas di section Command Line Application
. Perlu dicatat, path import menunjuk lokasi package, sedangkan nama yang dipakai saat memanggil identifier ditentukan oleh deklarasi package di dalam berkas yang dimaksud. Keduanya biasanya sama, seperti path fmt untuk package fmt, tetapi tidak selalu: package dengan path math/rand/v2 tetap dipanggil rand di kode karena deklarasi package di dalamnya bernama rand. Tabel berikut merangkum seluruh bentuk import yang akan kita temui:
| Bentuk | Contoh | Kegunaan |
|---|---|---|
| Satu package | import "fmt" | Mengimpor satu package saja |
| Grouped | import ( "fmt" ... ) | Mengelompokkan banyak import |
| Alias | import s "strings" | Memberi nama panggilan baru |
| Blank | import _ "image/png" | Menjalankan efek samping saja |
Demo: Grouped Import dengan Alias #
Berkas import-demo.go pada folder chapter ini mengimpor dua package sekaligus dan memakai alias untuk salah satunya:
package main
import (
"fmt"
s "strings"
)
func main() {
fmt.Println(s.ToUpper("budi santoso"))
fmt.Println(s.TrimSpace(" belajar pemrograman "))
fmt.Println(s.Repeat("=", 16))
}Output yang Dihasilkan:
BUDI SANTOSO
belajar pemrograman
================Mari kita telaah baris demi baris program di atas:
- Baris 3-6 (
import ( ... )): grouped import yang memuat dua package dalam satu deklarasi; gofmt menjaga setiap path berada di baris tersendiri. - Baris 5 (
s "strings"): import alias yang memberi nama panggilansuntuk packagestrings, sehingga fungsinya dipanggil sebagais.ToUpperdan bukanstrings.ToUpper. - Baris 9 (
fmt.Println(s.ToUpper("budi santoso"))): mengubah seluruh huruf string menjadi kapital lewat fungsiToUppersebelum dicetak. - Baris 10 (
fmt.Println(s.TrimSpace(...))): membuang spasi di awal dan akhir string denganTrimSpace; perhatikan outputnya tidak lagi bergandengan dengan spasi tepi. - Baris 11 (
fmt.Println(s.Repeat("=", 16))): mengulang string"="sebanyak 16 kali menjadi satu baris penuh.
Alias paling bermanfaat ketika nama package terlalu panjang, kurang jelas, atau bertabrakan dengan package lain yang bernama sama. Alias yang terlalu pendek seperti s justru mengurangi keterbacaan pada program besar, jadi gunakan secukupnya dan konsisten. Detail konflik nama dan konvensi alias dibahas di chapter Package Alias
.
Import yang Tidak Terpakai adalah Error #
Go menolak import yang dicantumkan tetapi tidak dipakai. Berkas error-import.go pada folder chapter ini sengaja mengimpor strings tanpa memakainya:
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println("Program ini tidak memakai package strings")
}Jalankan berkas tersebut untuk melihat penolakan compiler:
go run error-import.goOutput yang Dihasilkan:
# command-line-arguments
./error-import.go:5:2: "strings" imported and not usedPerintah di atas gagal dikompilasi dan berhenti dengan exit code 1. Baris pertama, # command-line-arguments, adalah nama package sementara yang dibentuk go run ketika kita menjalankan berkas secara langsung; baris kedua adalah pesan errornya yang menunjuk baris dan kolom import yang bermasalah. Perbaikannya sederhana: hapus import strings, atau gunakan package tersebut di dalam program. Aturan ketat ini membuat daftar import selalu jujur sebagai daftar kebutuhan program.
Blank Import #
Bentuk khusus terakhir adalah blank import dengan tanda garis bawah. Deklarasi import _ "image/png" tidak memberi nama panggilan sama sekali, sehingga kode kita tidak dapat memanggil fungsi dari package tersebut. Yang terjadi justru efek samping: package diinisialisasi dan fungsi registrasi di dalamnya mendaftarkan decoder PNG ke package image, sehingga image.Decode dapat mengenali format tersebut. Pola ini dipakai untuk package driver dan plugin; pembahasan lengkapnya ada di chapter Package Initialization
.
Dengan mekanisme import di tangan, kita sudah bisa memakai seluruh perangkat standard library. Fungsi fmt.Println yang menemani kita sejauh ini akan dibedah lebih dalam di chapter fmt.Println
, sebelum kita melangkah ke cara menjalankan program.
Referensi #
- Spesifikasi Go: Import declarations — aturan resmi seluruh bentuk import.
- Effective Go: Blank import — penjelasan resmi pola import untuk efek samping.
- Dokumentasi package fmt — contoh package standard library yang paling sering diimpor.
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
error-import.go
Unduh berkaspackage main
import (
"fmt"
"strings"
)
func main() {
fmt.Println("Program ini tidak memakai package strings")
}
import-demo.go
Unduh berkaspackage main
import (
"fmt"
s "strings"
)
func main() {
fmt.Println(s.ToUpper("budi santoso"))
fmt.Println(s.TrimSpace(" belajar pemrograman "))
fmt.Println(s.Repeat("=", 16))
}