Print() - Println() - Printf()

Şimdi, 'fmt.' dediğimiz zaman 'fmt' modülü içerisindeki fonksiyonları görebiliyorduk. Bu zamana dek bu fonksiyonlar arasından 'Println()' fonksiyonunu kullandık. Fakat dikkat ederseniz 'Println()' fonksiyonunun yanında 'Print()' ve 'Printf()' fonksiyonları da mevcut:

Bu üç fonksiyonun üçü de aslında ekrana yazdırma işlemini yapıyor ama aralarında ufak tefek farklar bulunuyor. Önce Println() ile Print() arasındaki farka bakalım.

Println() fonksiyonu ekrana yazdırırken bir alt satır daha yaratır. Sonundaki 'ln' eki, 'line' anlamına gelir; 'Print line' olarak düşünürsek de 'Satır Yazdır' anlamını taşır. Yani Println() kullanılarak ekrana yazdırma işlemi yaparsak, otomatik olarak aşağı, yeni bir satır daha açar. 

Print() ise yeni bir satır daha oluşturmaz ve sonrasında gelecek olan metni direkt olarak yanına yazdırır. Hemen örnek verelim:

Yukarıda, kırmızı kutu ile işaretlediğim kısımlara bakın. Önce Println() kullandık ve iki farklı yazdırma işlemini alt alta yaptık. Çıktıya baktığımız zaman gerçekten de alt alta yazıldıklarını göreceksiniz. Yeşil kutulara baktığınız zaman ise Print() kullandığımızı göreceksinizdir. Aynı şekilde iki farklı yazdırma işlemini alt alta yaptık ama çıktıya baktığınızda sonucun alt alta değil, bitişik geldiğini görüyoruz. İşte bunun sebebi az önce yukarıda anlattıklarımdan kaynaklanıyor.

Yazılar kafanızı karıştırıyorsa hemen ortadaki fmt.Println("------------------") hakkında konuşalım. 

Yukarıda, Println() fonksiyonunu kullanarak iki tarafı ayıran bir şekilde komut yazdık; kırmızı kutu içerisine aldım. Terminale baktığımız zaman '------------' kısmından sonraki kodlar aşağı satırda çalışmış yani bir alt satırdan devam etmiş; zaten olması gereken de budur. Şimdi Print() fonksiyonuna bakalım. 

Yukarıda, aynı kodu bu sefer Print() ile yazdık. Dikkat ederseniz yeni bir satır oluşturulmadı. Bunun yerine alt tarafta kalan kodları hemen yanına yazdırdı. İşte Println() ile Print() arasındaki ince fark tam olarak budur. Print()'in lazım olabileceği yerler elbette olacaktır; gereksiz gibi görmenizi istemem.

Printf() ise, bir format şeklinde ekrana yazı verir. Format dediğimiz şey, bir değişkenin tipi, değeri gibi parametreleri ifade eder. Örneğin ekrana, değişkenleri de kullanarak bir metin yazdıracaksınız, normalde olsa bunu nasıl yazarsınız? Şu ana kadarki bilgilerimizle yazdırma işlemini şu şekilde yapmanız olasıdır:

Yukarıdaki örnek başlangıç seviyesi için geçerlidir. Değişkenleriniz tanımlarsınız, Println() fonksiyonu ile gerekenleri yazarsınız; çıktı da başarılı bir şekilde gelir. Fakat gerçek hayata bakalım: Bir forum sitesi tasarladığınızı düşünün ve foruma üye olanların otobiyografi kısmını yaratmak istiyorsunuz. Bunun için kullanıcıdan isim, soyisim, yaş, okuduğu okul, bildiği programlama dilleri gibi birçok bilgiyi istiyorsunuz. Kullanıcı da bunları girdiğinde otomatik olarak bir yazı oluşturuyorsunuz ve bunu kaydediyorsunuz (kullanıcıdan girdi almayı öğreneceğiz). Böyle bir durumda yine Println() mi kullanacağız? Hemen görelim:

Yukarıda, mavi kutu ile işaretlediğim kısımda değişkenlerimizi tanımladık; 5 adet değişkenimiz mevcut. Daha sonra bahsettiğimiz otobiyografi kısmı için bir yazı hazırladınız ve değişkenlerimiz herkes için farklılık göstereceği için metin içerisine değişkenleri yerleştirdiniz. Evet, kod çalışıyor; çıktı da başarılı bir şekilde geldi ama sizce de bu kod, gerçekten karışık ve acemice durmuyor mu? Bu ve bu gibi durumlarda Printf() fonksiyonu imdadımıza koşuyor. Bir de Printf() ile aynı kodu yazmayı deneyelim:

Yukarıdaki kodlara dikkat edin. Değişkenlerimiz aynı, sadece ekrana yazdırma biçimimiz farklı. Burada, Printf() kullandık ve yine ekrana yazdırma işlemini gerçekleştirdik. Printf() içerisindeki yazıda bulunan '%v' işareti, İngilizce'deki value kelimesinden gelir ve anlamı 'değer'dir. Bu kod satırında tam anlamıyla 'elmalar ve armutları ayırdık' diyebiliriz. Yazdığımız metin içerisinde karışıklık olmaması açısından değişkenlerin yerini tutan ve GoLang'de özel karakter olan '%v' karakterini kullandık. Daha sonra yazdığımız metin bittikten sonra tırnak işaretlerinin dışına bir virgül ',' koyup sırasıyla değişkenleri yazdık. Kutuların renklerine dikkatli bakın; sarı kutudaki %v karakteri, virgülden sonraki ve yine sarı kutudaki 'name' değişkenini temsil ediyor. Aynı şekilde turkuaz renkli kutunun içindeki %v karakteri, virgülden sonraki ve yine turkuaz kutudaki 'surname' değişkenini temsil ediyor. Bu, böyle devam ediyor.

Bu kodu yazmamızdaki temel amaçları şu şekilde sıralayabiliriz:

  • Daha profesyonelce hareket etmek
  • Birkaç ay sonra kodunuzu tekrar açtığınızda 'Bu kodu yazarken ne yazdığımı ben ve Allah biliyorduk; artık sadece Allah biliyor' dememek yani karışıklığı önlemek
  • Başka birinin, kodumuzu daha rahat okuyabilmesi

GoLang'de bulunan diğer özel karakterleri şu siteden bulabilirsiniz: https://pkg.go.dev/fmt

Lütfen bunun pratiğini yapın ve syntax yapısına dikkat edin. Bunun için kodun sade halini aşağı bırakıyorum:


Yayınlanma Tarihi: 2022-07-18 16:04:24

Son Düzenleme Tarihi: 2022-07-19 19:52:57