Menu
CoddyTech

Ringkasan: Membuat Utilitas

Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 57 dari 68.

challenge icon

Tantangan

Mudah

Buat package stringutil yang lengkap dengan fungsi manipulasi string, lalu demonstrasikan penggunaannya dalam program utama. Tantangan ini akan menguji kemampuanmu membuat package utilitas kustom, mengimplementasikan fungsi yang diekspor, dan menggunakan package-mu dari program lain.

Kamu akan menerima dua input:

  • String yang berisi spesifikasi fungsi dalam format "function1:description1,function2:description2" (misalnya, "Reverse:reverses a string,ToUpper:converts to uppercase,ToLower:converts to lowercase")
  • String yang berisi string uji yang dipisahkan dengan tanda pipa dalam format "string1|string2|string3" (misalnya, "hello|Go Programming|WORLD")

Tugasmu adalah:

  1. Buat package stringutil dengan mendeklarasikan package stringutil
  2. Parse input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan spesifikasi fungsi satu per satu
  3. Untuk setiap spesifikasi fungsi, pisahkan berdasarkan titik dua untuk mendapatkan nama dan deskripsi fungsi
  4. Implementasikan fungsi-fungsi yang diekspor berikut di package stringutil-mu:
    • Reverse(s string) string - mengembalikan string dengan karakter dalam urutan terbalik
    • ToUpper(s string) string - mengembalikan string yang telah diubah menjadi huruf besar
    • ToLower(s string) string - mengembalikan string yang telah diubah menjadi huruf kecil
    • Length(s string) int - mengembalikan panjang string
  5. Di program utamamu, impor package stringutil
  6. Tampilkan header package: "=== STRINGUTIL PACKAGE DEMONSTRATION ==="
  7. Tampilkan fungsi yang tersedia:
    • "Available functions in stringutil package:"
    • Untuk setiap fungsi dari input pertama: "- [function_name]: [description]"
  8. Parse input kedua dengan memisahkannya berdasarkan tanda pipa untuk mendapatkan string uji satu per satu
  9. Tampilkan header pengujian: "Testing stringutil functions:"
  10. Untuk setiap string uji, demonstrasikan semua fungsi:
    • "Testing with: \"[test_string]\""
    • " stringutil.Reverse: \"[reversed_result]\""
    • " stringutil.ToUpper: \"[uppercase_result]\""
    • " stringutil.ToLower: \"[lowercase_result]\""
    • " stringutil.Length: [length_result]"
  11. Hitung dan tampilkan statistik:
    • "=== STATISTICS ==="
    • "Total test strings processed: [number_of_test_strings]"
    • "Functions available in package: [number_of_functions_from_first_input]"
    • "Total function calls made: [total_function_calls]"
  12. Tampilkan string terpanjang dan terpendek:
    • "Longest string: \"[longest_string]\" (length: [length])"
    • "Shortest string: \"[shortest_string]\" (length: [length])"
  13. Tampilkan pesan penyelesaian: "Package demonstration completed successfully"

Gunakan package strings untuk memisahkan string input dan memanipulasi teks, serta package fmt untuk menghasilkan output berformat. Untuk fungsi Reverse, kamu perlu mengonversi string menjadi slice rune, membalik urutannya, lalu mengonversinya kembali menjadi string. Ingat, semua fungsi yang diekspor harus diawali huruf kapital agar dapat diakses dari package lain. Tantangan ini menunjukkan cara membuat package utilitas yang dapat digunakan kembali dan mengelompokkan fungsionalitas terkait.

Coba sendiri

package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

// TODO: Buat fungsi paket stringutil-mu di sini
// Karena kita tidak bisa menggunakan file terpisah, definisikan fungsi-fungsinya secara langsung
// Biasanya, fungsi-fungsi ini berada dalam file paket terpisah

// func Reverse(s string) string {
//     // Ubah menjadi rune, balik urutannya, lalu ubah kembali menjadi string
// }

// func ToUpper(s string) string {
//     // Gunakan strings.ToUpper
// }

// func ToLower(s string) string {
//     // Gunakan strings.ToLower
// }

// func Length(s string) int {
//     // Kembalikan len(s)
// }

func main() {
	// Baca input menggunakan bufio.Scanner agar spasi ditangani dengan benar
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	functionSpecs := scanner.Text()
	
	scanner.Scan()
	testStrings := scanner.Text()
	
	// Uraikan spesifikasi fungsi
	funcList := strings.Split(functionSpecs, ",")
	
	// Uraikan string pengujian
	testList := strings.Split(testStrings, "|")
	
	// TODO: Tulis kodemu di bawah ini
	// 1. Tampilkan header package
	// 2. Tampilkan fungsi yang tersedia dari funcList (periksa panjang array)
	// 3. Uji semua fungsi dengan setiap string pengujian
	// 4. Hitung dan tampilkan statistik
	// 5. Cari dan tampilkan string terpanjang/terpendek (periksa apakah testList memiliki elemen)
	// 6. Tampilkan pesan selesai
	
	// Ingat, gunakan fungsi dari package stringutil milikmu seperti:
	// Reverse(testString)
	// ToUpper(testString)
	// ToLower(testString)
	// Length(testString)
}

Semua pelajaran di Logika & Alur

Latihan sendiri: Compiler Go online