Go Dilinde Concurrency

2,190 More

Projedeki Git Dosyaları Nasıl Silinir?

1 7,684 More

yTheme

4 2,659 More

Sunucu Güvenliği | SSH (Secure Shell) Kullanımı

2 2,111 More

Truemag

  • PHP
  • Golang
  • Laravel
  • Linux
  • SQL
  • SEO
  • WordPress
  • Diğer
    • Yazılım
    • Javascript
    • Css/XHtml/W3C
    • Genel
    • Tanıtım
    • Ajax
  • Home
  • ANASAYFA
  • HAKKIMDA
  • SPONSORLUK
  • ARŞİV
  • İLETİŞİM
  • BENİMLE ÇALIŞMAK İSTER MİSİNİZ?

5 Kullanışlı Go Fonksiyonu

Yazılım geliştiriciler bir süre sonra sürekli aynı işlemi gerçekleştiren fonksiyonlara ihtiyaç duyarlar. Kimisi geleceği düşünüp bunları her an elinin altında bulundurur ve hatta yeniden kullanılabilir birer paket haline getirir, kimisi ise yazıp geçer ve arkasına bir daha bakmaz :) Ben ise ilk örnekteki yazılımcı gibi Go projelerinde genellikle ihtiyaç duyduğum 10 fonksiyonu toparlayıp sizinle paylaşmak istedim. Sizin de olmazsa olmazlarınız varsa yorum olarak paylaşabilirseniz çok sevinirim ;)

1. ByteToString – Byte Değişkeni Stringe Dönüştürme

Hemen her projede ihtiyacım olan bir konudur byte değişkeni string’e dönüştürme. Aslında byte’tan string’e ve string’den byte’a dönüştürmek için Go’nun aşağıdaki örnekte olduğu gibi kendi fonksiyonlarını kullanabilirsiniz (Teşekkürler Fatih Arslan) ancak biz çalışmalarımız esnasında bu dönüştürmelerin sağlıklı çalışmadığını ve karakterleri bozabildiğini tecrübe ettik. Bunun üzerine yazının devamında belirteceğim söz konusu fonksiyonlardan faydalandık.

1
2
3
4
5
6
7
8
9
10
11
12
package main
 
import (
"fmt"
)
 
func main() {
a := "foo"
b := []byte("bar")
fmt.Println([]byte(a))
fmt.Println(string(b))
}

Bizim tercih ettiğimiz yöntem için iki farklı fonksiyon önerim var. Tercih size kalmış.

1
2
3
func BytesToStrings(b []byte) string {
return fmt.Sprintf("%s", b)
}

veya

1
2
3
func BytesToString(b []byte) string {
return string(b[:])
}

2. fmt.Println’dan Kurtulmak

Go’da özellikle geliştirme (dev) ortamında yapılan işlemin sonucunu ekrana yazdırmak için fmt.Println() kullanmaktayız. Ancak bununla birlikte Go’nun bir özelliği de değişkenlere değer olarak fonksiyon atayabilmemiz. Bu iki bilgiyi birleştirince ekrana bir şey yazdırmak için şöyle pratik bir çözüm üretebiliriz.

1
2
3
4
5
6
7
8
9
10
11
package main
 
import "fmt"
 
func main() {
 
p := fmt.Println
 
p("yakuter.com")
 
}

3. IsEmpty – Bir Klasörün Boş Olup Olmadığını Kontrol Etme

Bazı durumlarda Go ile bir klasörün boş olup olmadığını kontrol etme gereği duyarız. Bunun için de hazır bir fonksiyonumuz olmadığı için aşağıdaki gibi bir fonksiyon ile ihtiyacımızı karşılayabiliriz. Bu fonksiyon, klasörün içinde dosya varsa true, yoksa false döner. Eğer belirtilen isimde bir klasör yoksa ‘no such file or directory’ hata mesajı döner.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
package main
 
import (
"fmt"
"io"
"os"
)
 
func main() {
fmt.Println(IsEmpty("/xxx/yyy/zzz"))
}
 
func IsEmpty(name string) (bool, error) {
f, err := os.Open(name)
if err != nil {
return false, err
}
defer f.Close()
 
_, err = f.Readdir(1)
if err == io.EOF {
return true, nil
}
return false, err
}

Hazır dosyalardan konu açılmışken daha önce Go Programlama Dili (Golang) ile Dosya İşlemleri başlıklı yazımı okumanızı ve örneklere bakmanızı tavsiye ederim.

4. Go ile Bir Klasörün İçindeki Tüm Dosyaları Silme

Bir üst maddedeki gibi bir klasörün içindekilerin varlığını kontrol etme ve bu klasördeki her şeyi silme aslında basit gibi dursa da biraz insanı uğraştıran konular. Ben de tekrar tekrar uğraşmamak için bir klasörün içini boşaltırken (tüm dosya ve klasörleri silmek için) aşağıdaki fonksiyondan faydalanıyorum.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main
 
import (
"os"
"path/filepath"
)
 
func main() {
err := RemoveContents("/aaa/bbb/ccc")
if err != nil {
panic(err)
}
}
 
func RemoveContents(dir string) error {
d, err := os.Open(dir)
if err != nil {
return err
}
defer d.Close()
names, err := d.Readdirnames(-1)
if err != nil {
return err
}
for _, name := range names {
err = os.RemoveAll(filepath.Join(dir, name))
if err != nil {
return err
}
}
return nil
}

5. Go ile Metinleri Snake Case (snake_case) Yapma

Bazen bir metni küçültüp aralarına alt çizgi eklemek isteriz. İngilizce’de bunun karşılığı Snake Case şeklindedir. Go ile bunu başarmak için aşağıdaki fonksiyondan faydalanabilirsiniz.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package main
 
import (
"fmt"
"regexp"
"strings"
)
 
func main() {
fmt.Println(ToSnakeCase("AnkaraBursaAmasya"))
// Çıktı: ankara_bursa_amasya
}
 
func ToSnakeCase(str string) string {
var matchFirstCap = regexp.MustCompile("(.)([A-Z][a-z]+)")
var matchAllCap = regexp.MustCompile("([a-z0-9])([A-Z])")
 
snake := matchFirstCap.ReplaceAllString(str, "${1}_${2}")
snake = matchAllCap.ReplaceAllString(snake, "${1}_${2}")
return strings.ToLower(snake)
}

Son Sözler

Şu sıralar Go ile fazla haşir neşir olduğum için yazıların içeriği de o tarafa kaymış durumda. Umarım ülkemizde nispeten yeni yeni yaygınlaşmakta olan bu programlama dilini öğrenmek isteyenlere biraz olsun faydası dokunur. Sevgiler, saygılar.

Mar 26, 2019Erhan Yakut
Cloud Sunucu


hosting

Go Projesini DerlemekWeb ve Grafik Tasarımda Freelance Avantajı
You Might Also Like
 
Günlük Dediğin…
 
sIFR İle Güzelleşelim
Erhan Yakut
1 year ago Golang1,112
Sponsorlar

sponsor

sponsor

sponsor

sponsor
Bağlantılar
  • Beyazıt Kölemen
  • Domatessuyu
  • Lezzetli Robot Tarifleri
  • Ofizzo
  • PHP Dersleri
  • Wordpress Hosting
Random Posts
Kusura bakmayın içim yanıyor!
Ve Nihayet “SEO Teknikleri”
Tasarımda Espri Anlayışı
Hoşgeldin 2013!
.DS_Store Dosyaları Nasıl Silinir?
sdafasdf
Hakkımda

Bilişim Teknolojileri alanında içerik üretmek üzere oluşturulmuş olan Yakuter.com 2006 yılında Erhan Yakut tarafından hayata geçirilmiştir. devamını okuyun…

CLOUD SUNUCU DESTEĞİ
2006-2020 © Yakuter