Basit Bir Paket Oluşturma
Coddy'nin GO Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 53 / 68.
Şimdi kendi özel paketinizi oluşturma zamanı! Paket oluşturmak, kodunuzu farklı programlarda içe aktarılabilen ve kullanılabilen yeniden kullanılabilir modüller halinde düzenlemenize olanak tanır.
Bir paket oluşturmak için, dosyanızın en üstünde package anahtar kelimesi ve ardından paket adını kullanarak bildirim yaparak başlarsınız. Hesap makinesi paketimiz için şunu kullanacağız:
package calculatorBu paket içinde fonksiyonlar, değişkenler ve tipler tanımlayabilirsiniz. Sadece dışa aktarılan tanımlayıcıların (büyük harfle başlayanlar) diğer paketlerden erişilebilir olacağını unutmayın. İşte dışa aktarılan bir Add fonksiyonunu şu şekilde tanımlayabilirsiniz:
package calculator
func Add(a, b int) int {
return a + b
}Özel paketinizi başka bir dosyadan kullanmak için, onu tıpkı diğer paketler gibi içe aktarırsınız. main paketinizden, ardından dışa aktarılan fonksiyonları çağırabilirsiniz:
package main
import "calculator"
func main() {
result := calculator.Add(5, 3)
}Bu modüler yaklaşım, kodunuzu daha düzenli hale getirir ve kod tekrarı yapmadan işlevselliği birden fazla programda yeniden kullanmanıza olanak tanır.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
KolayTemel matematiksel işlemleri içeren özel bir mathutils paketi oluşturun ve ardından bunu ana programınızdan kullanın. Bu meydan okuma, bir paket oluşturma, dışa aktarılan (exported) fonksiyonları tanımlama ve özel paketinizi başka bir programda kullanmak üzere içe aktarma yeteneğinizi test edecektir.
İki girdi alacaksınız:
"function1:param1,param2:operation|function2:param1,param2:operation"formatında fonksiyon tanımlarını içeren bir dize (örneğin,"Add:5,3:addition|Multiply:4,7:multiplication|Subtract:10,4:subtraction")"operation1:value1,value2|operation2:value1,value2|operation3:value1,value2"formatında hesaplama isteklerini içeren bir dize (örneğin,"Add:15,25|Multiply:6,8|Subtract:50,20")
Göreviniz şunları yapmaktır:
- En üstte
package mathutilsbildirerek birmathutilspaketi oluşturun - Bireysel fonksiyon tanımlarını elde etmek için ilk girdiyi pipe (
|) karakterine göre ayırarak ayrıştırın - Her fonksiyon tanımı için, fonksiyon adını, parametreleri ve işlem türünü elde etmek üzere iki nokta üst üste karakterine göre ayırın
mathutilspaketinizde aşağıdaki dışa aktarılan fonksiyonları oluşturun:Add(a, b int) int- a ve b'nin toplamını döndürürSubtract(a, b int) int- a eksi b'yi döndürürMultiply(a, b int) int- a ve b'nin çarpımını döndürürDivide(a, b int) int- a'nın b'ye bölümünü (tam sayı bölmesi) döndürür
- Ana programınızda
mathutilspaketini içe aktarın - Paket bilgi başlığını görüntüleyin:
"=== MATHUTILS PACKAGE DEMO ===" - İlk girdiyi ayrıştırın ve kullanılabilir fonksiyonları görüntüleyin:
"Available functions in mathutils package:"- Her fonksiyon için:
"- [function_name]: Performs [operation_type] on two integers"
- Bireysel hesaplama isteklerini elde etmek için ikinci girdiyi pipe karakterine göre ayırarak ayrıştırın
- Her hesaplama isteği için, fonksiyon adını ve parametreleri elde etmek üzere iki nokta üst üste karakterine göre ayırın
- İki tam sayı değerini elde etmek için parametreleri virgül karakterine göre ayırın
strconv.Atoikullanarak parametre dizelerini tam sayılara dönüştürün- Hesaplama süreci başlığını görüntüleyin:
"Performing calculations:" - Her hesaplama isteği için:
mathutilspaketinden uygun fonksiyonu çağırın- Şunu görüntüleyin:
"mathutils.[function_name]([param1], [param2]) = [result]"
- Özet istatistikleri hesaplayın ve görüntüleyin:
"Calculation Summary:""Total calculations performed: [number_of_calculations]""Functions used: [comma_separated_list_of_unique_function_names_used]""Sum of all results: [sum_of_all_calculation_results]"
- Paket kullanım onayını görüntüleyin:
"Package demonstration completed successfully""All functions from mathutils package executed correctly"
Girdi dizelerini ayırmak için strings paketini, dizeleri tam sayılara dönüştürmek için strconv paketini ve formatlı çıktı için fmt paketini kullanın. Yalnızca büyük harfle başlayan fonksiyonların dışa aktarılacağını ve diğer paketlerden erişilebilir olacağını unutmayın.
Önemli: Her iki girdi satırı da girişler arasında sınırlayıcı olarak pipe (|) karakterini kullanır. İlk girdideki her giriş FunctionName:param1,param2:operationtype formatındadır — önce | karakterine göre ayırın, ardından fonksiyon adını (indeks 0) ve işlem türünü (indeks 2) çıkarmak için her girişi : karakterine göre ayırın.
Bu meydan okuma, özel paketler aracılığıyla nasıl yeniden kullanılabilir kod oluşturulacağını ve işlevselliğin nasıl mantıksal modüllere ayrılacağını gösterir.
Kopya kağıdı
Özel bir paket oluşturmak için, dosyanızın en üstünde package anahtar kelimesiyle bildirin:
package calculatorSadece dışa aktarılan tanımlayıcılara (büyük harfle başlayanlar) diğer paketlerden erişilebilir:
package calculator
func Add(a, b int) int {
return a + b
}Özel paketinizi başka bir dosyadan içe aktarın ve kullanın:
package main
import "calculator"
func main() {
result := calculator.Add(5, 3)
}Bu modüler yaklaşım kodu düzenler ve kod tekrarı yapmadan birden fazla programda yeniden kullanıma olanak tanır.
Kendin dene
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
// TODO: mathutils paket fonksiyonlarınızı burada oluşturun
// Ayrı dosyalar kullanamadığımız için fonksiyonları doğrudan tanımlayın
// Bunlar normalde ayrı bir paket dosyasında olurdu
func main() {
// Boşlukları düzgün işlemek için bufio.Scanner kullanarak girdiyi okuyun
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
functionDefs := scanner.Text()
scanner.Scan()
calcRequests := scanner.Text()
// TODO: Kodunuzu aşağıya yazın
// 1. Add, Subtract, Multiply, Divide fonksiyonlarını tanımlayın (mathutils paketini simüle ederek)
// 2. functionDefs'i ayrıştırın: her tanımı almak için '|' ile bölün, ardından her birini ':' ile bölün
// Format: FonksiyonAdı:parametre1,parametre2:işlem (örneğin "Add:5,3:addition")
// 3. Paket bilgilerini ve mevcut fonksiyonları görüntüleyin
// 4. calcRequests'i ayrıştırın ('|' ile bölün), hesaplamaları gerçekleştirin
// 5. Sonuçları ve özet istatistikleri görüntüleyin
// Kullanılmayan değişken uyarılarını bastırın
_ = functionDefs
_ = calcRequests
_ = fmt.Sprintf
_ = strconv.Atoi
_ = strings.Split
// Yarışmada belirtilen gerekli formatta çıktı vermeyi unutmayın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Kontrol Akışı
`fallthrough` ile Switchİç İçe Döngülerden ÇıkmaBelirli Bir Döngüye Devam Etme`goto` İfadesiÖzet - İleri Seviye Döngü Kontrolü4Proje: Basit Görev Listesi
Proje KurulumuGörev Ekleme2Structlar ve Metotlar
Structlarda Metot TanımlamaValue Receiver'larPointer Receiver'larReceiver SeçimiMetotlar ve FonksiyonlarÖzet - Struct Davranışı5Derinlemesine Map'ler
Struct Map'leriMap Değeri Olarak Pointer'larNil Map KontrolüMap'leri KarşılaştırmaÖzet - Kelime Frekansı Sayacı3Arayüzler (Temeller)
Arayüz Nedir?Bir Arayüz TanımlamaBir Arayüzü UygulamaArayüz Tiplerini KullanmaBoş ArayüzTip OnaylamalarıTip SeçimiÖzet - Şekiller ve Davranışlar6Deyimsel Go: Kümeler
Go'da Küme DeyimiBir Küme OluşturmaKümeye Eleman EklemeEleman Varlığını Kontrol EtmeKümeden Eleman SilmeKüme Üzerinde YinelemeÖzet - Benzersiz Kullanıcı Adları9Paketler ve Kapsam
Paket Nedir?Dışa Aktarılan ve AktarılmayanlarBasit Bir Paket OluşturmaPaket Takma AdlarıBoş Tanımlayıcı `_``init` FonksiyonuÖzet - Bir Yardımcı Araç Oluşturma