YAZILAR

Go'da ilkel değerleri direkt olarak adresi ile atamak için 5 yöntem

29 Tem 2023

#go#pointer#işaretçi#primitive#ilkel#değişken#atama

Herşeyden önce, bu işleme nerede ihtiyaç duyduğumuza bakalım.

Örnek bir senaryo görelim:

Yukarıdaki struct‘a baktığımızda, Text adında pointer string saklayan bir alanımız var. Bu alana string tipinde bir pointer atamak isteseydik, ne gibi yöntemlere başvurmamız gerekirdi?

Aslında Go tarafından destekleniyor olsaydı, böyle bir isteği yerine getirmenin en kolay yolu aşağıdaki gibi olabilirdi:

Ancak string değerinin adresini &"text" ile verme gibi bir yazım desteklenmediği için başka yöntemlere başvurmak zorundayız.

Ne yazık ki new fonksiyonu da yardımcı olamaz, çünkü new fonksiyonu sadece sıfır değerli bir değişken yaratır ve adresini döndürür. Bu nedenle belirlediğimiz değeri bir kerede atayamayız.

Peki bu durumda alternatif olarak nasıl yöntemler uygulayabileceğimize bakalım.

1. Yardımcı Değişken Oluşturarak

Adresi Text alanına göndermek için bir yardımcı değişken oluşturabiliriz.

2. Yardımcı Fonksiyon Oluşturarak

Adresi Text alanına göndermek için bir yardımcı fonksiyon oluşturabiliriz.

3. Generic Yardımcı Fonksiyon Oluşturarak

Aslında en etkili yöntem bu yöntemdir. Çünkü daha okunabilir ve tekrar kullanılabilir bir yöntemdir.

string yerine *int64 tipinde bir alanımız varsa, sayıyı int64 olarak belirtmeliyiz. Çünkü varsayılan ondalık sayı tipi int‘tir. Bu nedenle parametreyi doğrudan Ptr(123) olarak gönderemeyiz. Parametrenin tipini 2 farklı şekilde belirtebiliriz.

4. Dilim (Slice) Kullanarak

Dilim kullanarak uygulayabileceğimiz bir başka basit yöntem.

Ancak çok okunabilir bir yazı tarzı değil.

5. Tek Satırlık Anonim Fonksiyon Kullanarak

Bu yöntem de oldukça karışık görünüyor.

Bu yöntemler sadece ilkel veri tiplerinde geçerli değildir. Özel veri tipleri için de kullanabilirsiniz. Fakat özel veri tiplerinde ihtiyacımız olmadığı için, bu yazıda sadece ilkel veri tipleri için örnekler gördük.

Temel olarak uygulayabileceğimiz 5 yöntem bu şekildeydi. Umarım faydası dokunmuştur.