https://twitter.com/official_php/status/1331989202930634756

Uzun zamandır yazmayı planladığım PHP’nin 8 versiyonu ile ilgili yazı dizisi ile tekrardan merhabalar. Hangi yazılım geliştirme dilini kullanırsamız kullanın her yeni versiyon o dilde geliştirme yapanları heyecanlandırmıştır. PHP dilini kullananlar için bu heyecan neredeyse 7.versiyondan itibaren en yüksek seviyede olmaktadır. Her major versiyonda eksiliğini hissettiğimiz pek çok yeni özellik eklenmektedir.

Yeni versiyonun twitter duyurusu

Bu serinin ilk yazısı da PHP’nin 7 versiyonu ile beraber her versiyonda yeniliklerle karşılaştığımız veri türleri ve son version ile hayatımıza giren Union Types üzerine olacak.

PHP ile yazılım geliştirenlerin bildiği gibi bir property, parametre veya return type için sadece bir veri türü deklare edebiliyorduk.

Hello everyone, In this tutorial, I am going to show to you how to parse XML file via Golang with DTO.

Project Structure

Books.xml

XML file contains data such as author, title and price for each book.

We don’t need an extra library to parse xml or json with Go. There are many useful packages that come with Go.

Let’s get started coding.

First, we open the file with the Open function included in the os package. We use the Defer method to close the file after we are done with it. …

OOP (Nesne Yönelimli Programlama) konusu yazılım geliştiricilerin iş görüşmelerinde en sık karşılaştıkları sorulardan olsa gerek. Maçkolik ve Sahadan uygulamalarımız için PHP developer arayışımızda gerçekleştirdiğim iş görüşmelerinde de ben de sık sık bu konu üzerinden sorular sorup tatmin edici cevaplar almak istedim. Ancak gelin görün ki yaptığım 10 iş görüşmesinden sadece 1 aday sorularıma tatmin edici cevaplar vermeyi başardı ve işe alındı 🙂

Bunun üzerine bir yazı dizisi yazmaya karar verdim. Bunlardan ilki belki de en çok karıştırılan Abstract ve Interface kavramları üzerine olmalı diye düşündüm. …

OOP (Nesne Yönelimli Programlama) konusu yazılım geliştiricilerin iş görüşmelerinde en sık karşılaştıkları sorulardan olsa gerek. Maçkolik ve Sahadan uygulamalarımız için PHP developer arayışımızda gerçekleştirdiğim iş görüşmelerinde de ben de sık sık bu konu üzerinden sorular sorup tatmin edici cevaplar almak istedim. Ancak gelin görün ki yaptığım 10 iş görüşmesinden sadece 1 aday sorularıma tatmin edici cevaplar vermeyi başardı ve işe alındı 🙂

Bunun üzerine bir yazı dizisi yazmaya karar verdim. Bunlardan ilki belki de en çok karıştırılan Abstract ve Interface kavramları üzerine olmalı diye düşündüm. Zira iş görüşmelerinde adayların bu konuda kafalarının fazlasıyla karışık olduğunu anladım.

https://www.javatpoint.com/java-oops-concepts
https://www.javatpoint.com/java-oops-concepts

Nedir Bu Nesne Yönelimli Programlama?

1960'lı yılların sonuna doğru…

Slim is a lightweight and very fast micro framework for building powerful web app or Restful API. Slim contains very handy URL structure with routers, middlewares, bodyparser along with page templates, encrypted cookies and lots more. It also has a very clear documentation. If you want to get more details, you can check slim documentation or github page.

I have been using to slim framework for a long time especially create Restful Api for mobile app service. My last Slim project is loco, Loco is the most user friendly and accurate location tracking app to find and track live locations…

https://unix2dos.gitbooks.io/build-web-application-with-golang/content/en/02.2.html

Bir önceki bölümde go dilindeki array veri türü hakkında örnekler verip açıklamasını yapmış ve bazı uyarılarda bulunmuştum.

Bunların içinde bence en önemlisi array veri tipinin uzunluğunun baştan belirtilmek zorunda olduğu ve daha sonrasında değiştirilemediğidir.

Bu kurallar array veri tipini hantal, baştan iyi planlanması gereken, sadece tek tip veri türleri tutabilen veri tipini ortaya çıkarmaktadır. Peki ya oluşturacağımız dizinin uzunluğunu bilmiyorsak veya dinamik olarak yeni veriler eklememiz gerekirse ne yapacağız?

İşte bu noktada slice veri türünü kullanabiliyoruz. Dizilere göre oldukça dinamik olan slice türünde diziye sonradan dinamik olarak elemanlar ekleyebiliyoruz.

A slice is a segment of an array. Like arrays, slices…

Tüm programlama dillerinde olduğu gibi Go dilinde de diziler (array) yapısı son derece önemli bir veri yapısıdır. Bu yazıda da Go dökümanlarında built-in types olarak ifade edilen Array, Slices ve Maps kavramlarını örnekleri ile açıklamaya çalışacağım.

Array

Go dilinde dizilerin:

  • Sabit bir uzunlukları vardır (fixed length)
  • Dizi içlerinde benzer veri tipleri tutulabilir.

Go dilinde diziler genel olarak şuna benzerdir:

var x [5]int

5 elemanı olan ve integer değer tutacak ilk örneğimiz.

Kodun tamamına bakacak olursak

package main

import "fmt"

func main() {
var x [5]int
x[4] = 100
fmt.Println(x)
}

yazdığımız kodu kısaca şunu yapacak.

1- İçinde 5 tane integer…

Panic yok recover edicez :)

Panic

Go ile yazdığımız kodlarda bazen bilerek bazen de kodun hatalı olmasından kaynaklı olarak çalışma anında hatalar oluşabilir (runtime error). Bir veritabanı bağlantısı yaparken girmiş olduğumuz bilgilerin yanlış olması, initialize etmeden slice içeriğinin kullanılmaya çalışmak veya dizide olmayan bir elemanı çekmeye çalışmak go deyimi ile bir panic oluşturur ve kodun çalışması sonlandırılır.

Bu duruma tek istisna ise defer ile nitelendirilmiş fonksiyonlardır. Panic durumunda defer özelliği olan bir fonksiyon deklare edilmiş ise mutlaka çalıştırılacaktır. Go dilinde panic durumundan çıkabilmek için recover özelliği bulunmaktadır. Recover özelliğinin çalışması için mutlaka defer olarak nitelenmiş bir fonksiyon içinde gerçekleşmelidir.

Bu durumu bir örnek ile açıklayacak…

Go defer olarak işaretlenmiş fonksiyonları (anonim fonksiyonlar da dahildir) ana fonksiyonun çalışması sona erdikten sonra mutlaka çalıştırır. Neden defer metoduna ihtiyaç duyarız? diye soracak olursanız çok farklı cevaplar verilebilir.

Örneğin açılmış bir veritabanı bağlantısını, üzerinde çalıştığımız açık bir dosyayı vb. Kapatmak için. Defer ile ilgili belirtmem gereken en önemli özelliği çalışma anında ortaya çıkan ve fonksiyonun durmasına neden olan hatalarda bile çalışacak olmasıdır.

https://yourbasic.org/golang/defer/

Avantajları:

  1. Türü ne olursa olsun açılışını yaptığımız işlemlerine hemen alt satırına defer ile kapatma görevini ekleyebiliriz. Böylece unutmamız zorlaşır.
  2. Defer fonksiyonları runtime panic adını verdiğimiz çalışma anında ortaya çıkan hatalarda dahi çalışacaktır.
  3. Defer özellikle kaynakların serbest bırakılması…

Baris Eser

Software Developer mackolik

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store