• 27-08-2022, 21:47:18
    #1
    Merhaba. Golang için geliştirdiğim yazılımlarda kullandığım temel fonksiyonlardan kendi projelerinizde yararlanmanız için ücretsiz olarak yayınlıyorum.

    Golang için is_dir fonksiyonu
    Belirtilen dosyanın bir dizin olup-olmadığını kontrol eden bir Go fonksiyonu.




    https://staticbucket.netlify.app/cod...ions/is_dir.go
  • 27-08-2022, 22:13:02
    #2
    dev
    Kurumsal Üye
    aponkral adlı üyeden alıntı: mesajı görüntüle
    Merhaba. Golang için geliştirdiğim yazılımlarda kullandığım temel fonksiyonlardan kendi projelerinizde yararlanmanız için ücretsiz olarak yayınlıyorum.

    Golang için is_dir fonksiyonu
    Belirtilen dosyanın bir dizin olup-olmadığını kontrol eden bir Go fonksiyonu.

    package main
    
    import (
        "os"
        "fmt"
    )
    
    func is_dir(filename string) bool {
        fd, err := os.Stat(filename)
        if err != nil {
            return false
        }
        fm := fd.Mode()
        return fm.IsDir()
    }
    
    func main() {
        dirname := "/tmp" // Dir location
    
        if is_dir(dirname) {
            fmt.Println("Yes, this is a directory.")
        } else {
            fmt.Println("No, this is not a directory.")
        }
    }
    https://staticbucket.netlify.app/cod...ions/is_dir.go
    Golangde fonksiyon isimlendirmelerinde snak_case tercih edilmiyor. https://go.dev/doc/effective_go#functions
    Eger public ise IsDir, private ise isDir olarak olarak isimlendirmek daha dogru olacaktir.

    https://github.com/samber/lo gibi bir paket olusturursan daha guzel olur. Tek pakette erisilebilir butun fonksiyonlar.
  • 27-08-2022, 22:37:12
    #3
    Noroc adlı üyeden alıntı: mesajı görüntüle
    Golangde fonksiyon isimlendirmelerinde snak_case tercih edilmiyor. https://go.dev/doc/effective_go#functions
    Eger public ise IsDir, private ise isDir olarak olarak isimlendirmek daha dogru olacaktir.

    https://github.com/samber/lo gibi bir paket olusturursan daha guzel olur. Tek pakette erisilebilir butun fonksiyonlar.
    Herkese açık bir kütüphane oluştursaydım bu dediğiniz doğru olurdu. Fonksiyon isimlerinin buyük harfle başlaması ve alt çizgi kullanmamak standartlar açısından uygun olurdu. Ancak bu fonksiyon kütüphaneye dahil bir fonksiyon değil.

    Bir fatura kütüphanesi oluştursaydım Kullanımı şu şekillerde olurdu;
    Fatura.Olustur()
    Fatura.Sil()
    Fatura.Duzenle()
    Fatura.Imzala()
    ...

    Konudaki paylaştığım kod tek başına bir fonksiyon olduğu için kütüphane oluşturulmasına gerek yok. Bir kütüphane hazırlamam gerektiğinde sizin de söylediğiniz gibi Go modül standarlarına uygun olarak yaparım.

    Golang örneklerinden de anlayabileceğiniz üzere main paketle birlikte kullanılacak fonsiyonlar için bu standarta uymanız beklenmez ve çoğunlukla resmi olarak uyulmaz da. Bu standartlar Go kütüphaneleri geliştirenlerin benzer kodlar oluşturması içindir.

    https://go.dev/tour/basics/4


    https://www.geeksforgeeks.org/functions-in-go-language/

    Bahsettiğiniz şey "package main" olmayan, kendi modülünü (kütüphanesini) kullanılması durumunda uygulanması gereken standarlardır. Bu Go geliştiricilerinin kendi stillerinde yazmasını engelleyeceği için proje üzerinde geliştirme ve düzenleme yapan geliştiricilerin birbirlerini daha iyi anlamasını sağlar. "Spagetti" dediğimiz kodun oluşmaması adına.



    Bahsettiğiniz adresten örnek vermişsiniz ancak sayfayı biraz aşağı kaydırırsanız bahsettiğim fonksiyon isimlerinin kullanılmış olduğunu da görebilirsiniz. "package main" ve fonksiyon isimlerinin başı büyük harfle başlamıyor. Resmi bir Go sayfasından örnek.