Menu
CoddyTech

Nama yang Diekspor dan Tidak Diekspor

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan GO di Coddy. Pelajaran 4 dari 107.

Di Go, huruf pertama sebuah nama menentukan visibilitasnya. Nama yang diawali dengan huruf kapital bersifat exported (dapat diakses dari package lain). Nama yang diawali dengan huruf kecil bersifat unexported (hanya dapat diakses dalam package tersebut).

Nama yang diekspor: terlihat di luar package

type User struct {
    Name  string  // Field yang diekspor
    Email string  // Field yang diekspor
}

func CreateUser(name string) User { // Fungsi yang diekspor
    return User{Name: name}
}

Nama yang tidak diekspor: hanya terlihat di dalam paket

type secret struct {     // struct yang tidak diekspor
    password string      // field yang tidak diekspor
}

func validate() bool {   // fungsi yang tidak diekspor
    return true
}

Campuran: struct yang diekspor dengan beberapa field yang tidak diekspor

type Account struct {
    Username string    // Diekspor, bisa diakses dari mana saja
    Email    string    // Diekspor, bisa diakses dari mana saja
    password string    // Tidak diekspor, hanya bisa diakses di dalam package
}

Konvensi penamaan ini menggantikan modifier akses seperti public dan private yang ditemukan dalam bahasa lain.

// Huruf kapital   = Diekspor (publik)
// Huruf kecil = Tidak diekspor (privat)

func SaveData() {}  // Diekspor
func loadData() {}  // Tidak diekspor

Mengikuti konvensi ini sangat penting di Go. Saat package lain mengimpor kodemu, package tersebut hanya dapat mengakses nama yang diawali dengan huruf kapital.

challenge icon

Tantangan

Sedang

Perbaiki semua nama di product.go agar mengikuti konvensi penamaan exported Go. Gunakan huruf kapital pada huruf pertama dari:

  • Nama struct: product → Product
  • Semua nama field: name, price, stock
  • Semua nama fungsi: totalValue, displayInfo
  • Semua referensi field di dalam fungsi

Coba sendiri

package main

import "fmt"

func main() {
    var name string
    var price float64
    var stock int
    fmt.Scan(&name, &price, &stock)

    p := Product{
        Name:  name,
        Price: price,
        Stock: stock,
    }

    fmt.Println(DisplayInfo(p))
    fmt.Printf("Total Value: %.2f\n", TotalValue(p))
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Go online