Golang Standart Kütüphanesindeki Bazı Önemli Paketler Ve İşlevleri

Beyza Alkış
GoTurkiye
Published in
4 min readJul 29, 2023

Go Türkiye tarafından oluşturulan Golang Mentorship kampındayım. Golang ile ilgili araştırmalar yapıyorum ve öğrenmeme büyük katkıları olduğu için sizlerle de paylaşmak istedim.

Bu yazımda;

  • fmt paketi,
  • os paketi,
  • net/http paketi,
  • encoding/json paketi,
  • time paketi

konularına değineceğim.

image address: https://miro.medium.com/v2/resize:fit:691/1*3wmzAGCy0z06-QMaJZD7Ag.png

1- fmt paketi

Go dilindeki fmt paketi, "format" kısaltmasıyla adlandırılan, biçimli çıktı sağlamak ve dize işlemleri yapmak için kullanılan bir standart pakettir. Bu paket, konsola, dosyalara veya diğer çıktı akışlarına metin tabanlı verileri yazdırmak ve okumak için işlevler sağlar.

  1. fmt.Println(): Argümanları ekrana yazdırır ve yeni bir satır ekler.
fmt.Println("Merhaba, Go!")
//Çıktı: Merhaba, Go!

2. fmt.Printf(): Biçimli çıktı yazdırır. % işaretiyle başlayan biçim belirteçlerini kullanarak değişkenleri ve değerleri biçimlendirme imkanı sunar.

 name := "Beyza"
surname := "Alkis"
fmt.Printf("Ad: %s, Soyad: %s", name, surname)
//Çıktı: Ad: Beyza, Soyad: Alkis

3. fmt.Errorf(): Bir hata oluşturur ve geri döndürür. Özellikle hata döndüren işlevlerde hata oluşumu durumunda kullanılır.

if x < 0 {
return 0, fmt.Errorf("x negatif olamaz")
}

4. fmt.Sprintf(): Biçimli çıktıyı bir dize olarak döndürür. Bu işlevi kullanarak çıktıyı bir değişkene atayabilirsiniz.

name := "Beyza"
age := 23
output := fmt.Sprintf("Ad: %s, Yaş: %d", name, age)

fmt paketi diğer dize işlemleri, tarama (scan), hata işlemleri ve daha fazla işlev içerir. Bu paketin kullanımı, Go dilinde dize biçimlendirme ve metin tabanlı çıktı işlemleri için oldukça yaygındır.

2. os paketi

Go dilindeki os paketi, işletim sistemi işlemleri için kullanılan standart bir pakettir. Bu paket, işletim sistemiyle etkileşime geçmek, dosya işlemleri yapmak, ortam değişkenlerine erişmek ve diğer işletim sistemi işlemlerini gerçekleştirmek için işlevler sağlar.

  1. os.Args: Programın komut satırı argümanlarını içeren bir dilim (slice) döndürür. İlk eleman, programın adını içerir.
  2. os.Exit(): Programı belirli bir çıkış koduyla sonlandırır. Genellikle, hata durumlarında veya programın beklenmedik bir şekilde sonlandırılması gerektiğinde kullanılır.
  3. os.Open(): Bir dosyayı okuma veya yazma için açar. Dosyayı açtıktan sonra işlem yapıldığında mutlaka kapatılmalıdır.
  4. os.Create(): Yeni bir dosya oluşturur. Eğer dosya varsa üzerine yazar.
  5. os.Getwd(): Çalışma dizinini döndürür. Çalışma dizini, programın başladığı dizindir.
  6. os.Chdir(): Çalışma dizinini değiştirir. Programın çalışma dizinini belirli bir dizine taşımak için kullanılır.
  7. os.Mkdir(), os.MkdirAll(), os.Remove(), os.RemoveAll(): Dizinleri oluşturmak ve silmek için işlevlerdir.
  8. os.Getenv(), os.Setenv(), os.Unsetenv(): Ortam değişkenlerine erişim ve ayarlama işlemleri yapar.

(*os paketinin yalnızca bir kısmını temsil etmektedir.*)

3. net/http paketi

Go dilindeki net/http paketi, HTTP sunucu ve istemci işlemleri için kullanılan standart bir pakettir. Bu paket, HTTP protokolü aracılığıyla web sunucuları oluşturmak ve HTTP istemcileri oluşturmak için gerekli işlevleri sağlar. Bu sayede Go dilinde web uygulamaları ve hizmetleri oluşturmak oldukça kolaydır.

  1. http.HandleFunc(): Belirli bir HTTP yoluna gelen istekleri bir işlevle eşleştirir. İşlev, isteği işleyerek yanıtı döndürür.
http.HandleFunc(pattern string, handler func(http.ResponseWriter, *http.Request))
  • pattern: URL yolu için eşleştirilecek desendir. Bu desen, gelen isteklerin istenilen URL yoluna uygunluğunu belirtir. Desen özel karakterleri destekleyebilir.
  • handler: Belirtilen URL yoluna gelen istekleri işleyen bir işlevdir. Bu işlev, http.ResponseWriter ve *http.Request türünden iki parametre alır. http.ResponseWriter, HTTP yanıtlarını oluşturmak ve döndürmek için kullanılırken, *http.Request, gelen HTTP isteklerini işlemek için kullanılır.
package main

import (
"fmt"
"net/http"
)

func helloHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, World!")
}

func main() {
http.HandleFunc("/hello", helloHandler)
http.ListenAndServe(":8080", nil)
}

Bu örnekte, “/hello” yoluna gelen istekler helloHandler işleviyle eşleştirilir ve bu işlev, "Hello, World!" yanıtını oluşturarak isteği işler. Sonra http.ListenAndServe() ile sunucu başlatılır ve belirtilen adreste dinlemeye başlar.

(* w http.ResponseWriter: Bu parametre, HTTP yanıtlarını oluşturmak ve döndürmek için kullanılır.

r *http.Request: Bu parametre, gelen HTTP isteklerini temsil eder. *)

4. encoding/json paketi

Go dilindeki encoding/json paketi, JSON (JavaScript Object Notation) verilerini işlemek için kullanılan standart bir pakettir. Bu paket, Go dilindeki veri yapılarını JSON formatına dönüştürmek ve aynı şekilde JSON verilerini Go dilindeki veri yapılarına dönüştürmek için işlevler sağlar.

  1. json.Marshal(): Go dilindeki veri yapılarını JSON formatına dönüştürür. Veri yapılarını JSON dizesine dönüştürmek için kullanılır.
  2. json.Unmarshal(): JSON verilerini Go dilindeki veri yapılarına dönüştürür. JSON dizesini Go veri yapılarına dönüştürmek için kullanılır.

5. time paketi

Go dilindeki time paketi, tarih ve saat işlemleri için kullanılan standart bir pakettir. Bu paket, zamanı temsil eden yapılar ve zamanla ilgili işlemler için işlevler sağlar.

  1. time.Time: Bu yapı, bir anın tarih ve saatini temsil eder. Zaman dilimleri, yıl, ay, gün, saat, dakika, saniye ve nanosaniye gibi bileşenleri içerir. time.Now() işlevi ile mevcut tarihi ve saati almak için kullanılır.
  2. time.Duration: Bu yapı, bir süreyi temsil eder. Süreler, birçok farklı birimde (saniye, milisaniye vb.) ifade edilebilir. İki zaman arasındaki farkı hesaplamak ve zaman aralıklarıyla ilgili işlemler için kullanılır.
  3. time.Parse(): Bir dizeyi belirli bir zaman düzenine göre ayrıştırır ve time.Time türünde bir değer döndürür.
  4. time.Sleep(): Belirli bir süre boyunca işlemi duraklatmak için kullanılır.
  5. time.After(): Belirli bir süre sonra bir kanalda bir değer gönderir. Bu, zamanlanmış işlemler ve süreli işlemler için kullanışlıdır.

Golang dilindeki tüm paketler ve işlevleri oldukça geniştir ve bunları tamamını burada listelemek mümkün değildir. Ayrıca, Go dilinin sürekli olarak gelişmekte olduğunu ve yeni paketlerin eklenmeye devam ettiğini unutmayın.

Diğer yazılarımda görüşmek üzere. :)

❤ ❤ ❤

--

--