Ringkasan: Membuat Utilitas
Termasuk bagian Logika & Alur dalam perjalanan GO di Coddy. Pelajaran 57 dari 68.
Tantangan
MudahBuat 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:
- Buat package
stringutildengan mendeklarasikanpackage stringutil - Parse input pertama dengan memisahkannya berdasarkan koma untuk mendapatkan spesifikasi fungsi satu per satu
- Untuk setiap spesifikasi fungsi, pisahkan berdasarkan titik dua untuk mendapatkan nama dan deskripsi fungsi
- Implementasikan fungsi-fungsi yang diekspor berikut di package
stringutil-mu:Reverse(s string) string- mengembalikan string dengan karakter dalam urutan terbalikToUpper(s string) string- mengembalikan string yang telah diubah menjadi huruf besarToLower(s string) string- mengembalikan string yang telah diubah menjadi huruf kecilLength(s string) int- mengembalikan panjang string
- Di program utamamu, impor package
stringutil - Tampilkan header package:
"=== STRINGUTIL PACKAGE DEMONSTRATION ===" - Tampilkan fungsi yang tersedia:
"Available functions in stringutil package:"- Untuk setiap fungsi dari input pertama:
"- [function_name]: [description]"
- Parse input kedua dengan memisahkannya berdasarkan tanda pipa untuk mendapatkan string uji satu per satu
- Tampilkan header pengujian:
"Testing stringutil functions:" - 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]"
- 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]"
- Tampilkan string terpanjang dan terpendek:
"Longest string: \"[longest_string]\" (length: [length])""Shortest string: \"[shortest_string]\" (length: [length])"
- 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
1Alur Kontrol Lanjutan
switch dengan `fallthrough`Keluar dari Perulangan BersarangMelanjutkan Perulangan TertentuPernyataan `goto`Rangkuman, Kontrol Perulangan Lanjutan4Proyek: Daftar Tugas Sederhana
Menyiapkan ProyekMenambahkan Tugas2Struct dan Method
Mendefinisikan Method pada StructPenerima NilaiPenerima PointerMemilih PenerimaMethod vs FungsiRekap: Perilaku Struct5Map secara Mendalam
Map Berisi StructPointer sebagai Nilai MapMenguji Map NilMembandingkan MapRingkasan: Penghitung Frekuensi Kata8Proyek: Inventaris Sederhana
Gambaran Umum ProyekMemeriksa Stok3Interface (Dasar)
Apa Itu Interface?Mendefinisikan InterfaceMengimplementasikan InterfaceMenggunakan Tipe InterfaceInterface KosongType AssertionType SwitchRingkasan: Bentuk dan Perilaku6Go Idiomatis: set
Idiom set dalam GoMembuat setMenambahkan elemen ke setMemeriksa keanggotaanMenghapus elemen dari setMelakukan perulangan pada setUlasan: Nama pengguna unik9Paket dan Lingkup
Apa Itu Paket?Diekspor vs Tidak DieksporMembuat Paket SederhanaAlias PaketIdentifier Kosong `_`Fungsi `init`Ringkasan: Membuat UtilitasLatihan sendiri: Compiler Go online