Golang – Input/Output (fmt.Print, fmt.Scan)

 

Kalau kamu baru mulai belajar Golang, ada dua hal yang pasti kamu temui di awal perjalananmu sebagai calon master Go: cara menampilkan output dan cara menerima input. Ibarat belajar naik motor—sebelum ngebut, harus tahu dulu mana gas, mana rem. Nah, di Golang, dua hal dasar ini dilakukan dengan bantuan paket legendaris bernama fmt.

Pada artikel ini, kita akan membahas dua fitur paling sering dipakai: fmt.Print (dan keluarganya) untuk output, serta fmt.Scan (dan saudaranya) untuk input. 

 

Apa Itu Paket fmt?

Sebelum ngomongin Print dan Scan, kita jawab dulu pertanyaan ini: fmt itu apa sih?
Jadi begini fmt adalah singkatan dari format, sebuah paket bawaan di Go yang bertugas membantu kita untuk memformat input dan output. Kadang formatnya sederhana, kadang ribet, tergantung kebutuhan.

Beberapa kemampuan fmt:

  • Menampilkan teks ke layar

  • Menerima input dari user

  • Format string (mirip printf di C)

  • Membuat teks dengan placeholder (%d, %s, %f, dll)

Kalau diibaratkan, fmt itu seperti MC di acara pernikahan. Dia urus interaksi dengan audiens. Tanpa dia, acara jadi canggung.

 

Output: fmt.Print, fmt.Println, fmt.Printf

1. fmt.Print

Print paling dasar. Fungsinya cuma satu: menampilkan teks tanpa newline.

fmt.Print("Halo ")
fmt.Print("Gopher!")

Output:

Halo Gopher!

Cocok kalau kamu mau cetak teks berurutan tanpa jeda baris.

2. fmt.Println

Kalau ingin setelah cetak langsung ganti baris? Gunakan Println().

fmt.Println("Halo Gopher!")
fmt.Println("Belajar Go itu seru.")

Output:

Halo Gopher!
Belajar Go itu seru.

Println() otomatis menambahkan spasi antar-argumen dan newline di akhir.

3. fmt.Printf

Nah ini favorit para developer. Dengan Printf, kamu bisa menampilkan teks dengan placeholder. Cocok untuk bikin output lebih rapi dan profesional.

Contoh:

name := "Budi"
age := 20
fmt.Printf("Nama: %s, Umur: %d\n", name, age)

Placeholder umum:

Placeholder Fungsi
%s string
%d integer
%f float
%t boolean
%v auto format
%+v display struct dengan field

Format float:

fmt.Printf("Nilai: %.2f\n", 3.14159)

Output:

Nilai: 3.14
 

Input: fmt.Scan, fmt.Scanln, fmt.Scanf

Kalau output itu "ngomong", maka input adalah "mendengarkan".
Tapi tenang, Golang mendengarnya pakai sopan.

1. fmt.Scan

Ini cara paling cepat menerima input.
Scanner akan membaca input hingga ada spasi.

Contoh:

var name string
fmt.Print("Masukkan nama: ")
fmt.Scan(&name)
fmt.Println("Halo,", name)

Jika input:

Budi Santoso

Maka yang terbaca hanya Budi saja. Karena Scan berhenti di spasi pertama.

2. fmt.Scanln

Mirip dengan Scan, tetapi dia berhenti membaca ketika ketemu newline (Enter).
Jadi dia bisa menangkap input dengan spasi.

Contoh:

var fullname string
fmt.Print("Masukkan nama lengkap: ")
fmt.Scanln(&fullname)
fmt.Println("Halo,", fullname)

Input:

Budi Santoso

Output:

Halo, Budi Santoso

Keren kan?

3. fmt.Scanf

Ini versi input yang punya format. Sama seperti Printf, tetapi untuk menerima input.

Contoh:

var name string
var age int
fmt.Print("Masukkan nama dan umur (format: nama umur): ")
fmt.Scanf("%s %d", &name, &age)
fmt.Printf("Halo %s, umurmu %d tahun\n", name, age)

Input:

Budi 20

Output:

Halo Budi, umurmu 20 tahun
 

Contoh Program Lengkap Input & Output Go

Biar makin mantap, kita buat program kecil yang memadukan semua fungsi tadi. Ini contoh sederhana, cocok untuk latihan pemula:

package main

import (
	"fmt"
)

func main() {
	var name string
	var age int
	var address string

	fmt.Println("=== Program Data Diri Sederhana ===")
	
	fmt.Print("Masukkan nama anda: ")
	fmt.Scanln(&name)

	fmt.Print("Masukkan umur anda: ")
	fmt.Scan(&age)

	// Clear buffer newline
	fmt.Print("Masukkan alamat lengkap: ")
	fmt.Scanln(&address)

	fmt.Println("\n=== Hasil Data Diri ===")
	fmt.Printf("Nama     : %s\n", name)
	fmt.Printf("Umur     : %d tahun\n", age)
	fmt.Printf("Alamat   : %s\n", address)
}

Program sederhana ini sudah cukup untuk memahami bagaimana interaksi dasar input/output di Go bekerja.

 

Masalah Paling Umum Saat Menggunakan fmt.Scan

Tidak lengkap rasanya kalau tidak membahas error klasik yang sering bikin pemula merasa Golang "galak".

1. Scanner loncat input

Kadang input berikutnya tidak terbaca karena buffer masih berisi newline \n.
Biasanya terjadi setelah membaca integer lalu membaca string.

Solusi gampang:

  • pakai bufio.NewReader (lebih profesional)

  • atau baca newline dengan fmt.Scanln() dummy

  • atau urutkan input agar string dibaca dulu

2. Scan hanya membaca sampai spasi

Ini sudah sifat dasar Scan.
Jika butuh kalimat lengkap, gunakan:

  • Scanln

  • atau bufio.Reader

     

Input dan output adalah fondasi penting dalam pemrograman Golang. Dengan menguasai fmt.Print, fmt.Println, dan fmt.Printf untuk output, serta fmt.Scan, fmt.Scanln, dan fmt.Scanf untuk input, kamu sudah menguasai salah satu aspek paling dasar untuk membuat aplikasi Go yang interaktif.

Intinya:

  • Mau cetak teks? Gunakan Print, Println, atau Printf.

  • Mau menerima input? Pakai Scan, Scanln, atau Scanf.

  • Mau tampil profesional dari awal? Atur format dengan Printf dan Scanf.

Semakin kamu latihan, semakin natural rasanya, seperti nge-chat gebetan tapi tanpa ghosting.

Selamat ngoding, Gopher!

0 Comments:

Posting Komentar