Turkish Golang Tutorial Guide #4 : Functions and Strings

in #utopian-io9 years ago (edited)

Hi everyone, this is a Turkish tutorial content about Golang (Go) programming language. It will be a contet serial abut this language. This post will be about functions and strings. So, thank you for reading!

Fonksiyonlar


Fonksiyonları tanımlayacak olursak; bir grup işlemi gerçekleştiren, yazılımı hız -bellek-enerji yönünde tasarruflu bir hale getiren emirler bütünüdür diyebiliriz sanırım. Her programlama dili kendi içerisinde fonsiyon bulundurur mutlaka. Hatta fonksiyonel programlama diye bir kategori dahi vardır ve gündelik hayatta kullandığımız bir çok yazılım bu kategorideki programlama dilleri ile modüler bir şekilde yazılıp oluşturulmaktadır. Fonksiyonların temel olayı bu zaten, organizasyonu modüllere yani daha küçük ve işlevsel parçalara bölüp görev dağılımı yapmamızı sağlamak.

func function_name( [parameter list] ) [return_types]
{
body of the function
}

Bir fonksiyonun gövdesini veya şablonunu bu şekilde gösterebiliriz. Kendine has bir adı, aldığı parametreler, geri döndürdüğü parametreler ve yaptığı spesifik işlemler vardır.

Misal bu örnekte oluşturduğumuz max fonksiyonu ile iki sayıdan büyük olanını bulabiliyoruz. Yazacağımız daha büyük bir yazılım projesinde iki sayıdan büyük olanı bulmamız gerektiğinde direk max fonksiyonunu çağırarak bu işi bizim yerimize defalarca yapmasını sağlayabiliriz. Sanırım bu noktada yazılımlar günümüzün dijital köleleri oluyorlar. (Sonra neden SKYNET isyan etti!)

Oluşturduğumuz bu prototip fonksiyonu çalışan bir örnek içinde kullandığımızda ise gördüğünüz gibi önce iki değişken oluşturup ona değerler atıyoruz ardından ise fonksiyonumuzu çağırıyoruz. Evet şimdi bir sonraki adım olarak yazdığımız bu kodun çıktısında bize verilen görevi gerçekleştiriyoruz.

Go dili aslında fonksiyonların birden çok değer döndürmesine olanak tanıyan bir yapıya sahip. Evet doğru okudun, bir fonksiyondan birden fazla değer döndürmek mümkündür. Örneğin Bir dikdörtgenin uzunluğunu ve genişliğini alır ve dikdörtgenin hem alanını ve çevresini döndüren bir fonksiyon yazabiliriz.


package main
import "fmt"

func multi(x, y int) (int, int) {
var area = x * y
var perimeter = (y + x) * 2
return area, perimeter
}
func main() {
area, perimeter := multi(10, 5)
fmt.Printf("Area %d Perimeter %d", area, perimeter)
}

Burada gördüğünüz gibi dikdörtgenin alanını hesaplamak için area ve perimeter adlı iki değişken oluşturup onlar için gerekli aritmetik işlemleri yaptıktan sonra fonskiyonda return yaparken bu iki değişkeni birden geri döndürdük. Dolayısı ile çıktımız şöyle oldu:

Area 50 Perimeter 30

String'ler


String aslında bir byte dilimi, veri tipidir, tıpkı integer ve float gibi. Fakat onlardan farklı olarak sayısal bir değere değil de bir karakter/string değerine sahiptir,

var mono = "Hello Utopian!" gibi. Bunun için daha geniş bir örnek vermek gerekirse;

şeklinde bir kod yazıp çalıştırdığımızda;

normal string: Hello Utopian!
hex bytes: 48 65 6c 6c 6f 20 55 74 6f 70 69 61 6e 21
quoted string: "\xbd\xb2=\xbc \u2318"

şeklinde bir çıktı alırız. Bu arada eğer bir string'in uzunluğunu merak ediyorsak, yani kaç karakterden oluştuğunu öğrenmek istiyorsak len(str) metodunu kullanmamız yeterli olacaktır. Bununla ilgili örneğimiz ise şöyle olabilir mesela;

Bir stringin her bir karakterini ayrı ayrı çıktı olarak verebiliriz. Bunu o stringi parçalayıp bir for döngüsünün içine koyarak yapabiliriz. Bunu range ile yaparız ve stringin içindeki her bir karakterin hangi byte dan geldiğini de görmüş oluruz.


package main
import "fmt"

func printChars(s string) {
for index, m := range s {
fmt.Printf("%c starts at byte %d\n", m, index)
}
}
func main() {
name := "WORK WİTH MONOMYTH"
printChars(name)
}

Bu programın çıktısı ise şu şekilde olur;

W starts at byte 0
O starts at byte 1
R starts at byte 2
K starts at byte 3
starts at byte 4
W starts at byte 5
İ starts at byte 6
T starts at byte 8
H starts at byte 9
starts at byte 10
M starts at byte 11
O starts at byte 12
N starts at byte 13
O starts at byte 14
M starts at byte 15
Y starts at byte 16
T starts at byte 17
H starts at byte 18

Ve son örneğimizde stringler ve fonksiyonlar konusunu birleştiren ortak bir örnek ile, birden çok string değeri döndüren bir fonksiyon yazalım.



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

@monomtyh ben geldim pornolarda yolda @damla @fitch kimse cevap vermiyor arttık kimse kusura bakmayacak toprağım @eser piçi bulunana kadar porno kolleksiyonu yaptıracağım millete.... sen ikaz et istersen beni dinleyen yok çünkü :(

Your contribution cannot be approved yet because it is not as informative as other contributions. See the Utopian Rules. Please edit your contribution an try to improve the length and detail of your contribution.

Example:

  • the title / headline suggests your post is about functions and strings in GoLang
  • but regarding functions, you only barely touch the topic of functions;
  • please add more information, such as how to pass arguments with functions, how to return multiple values (GoLang is unique in that!), explain error handling, etc.

You can contact us on Discord.
[utopian-moderator]

Edited as I can.

Give '0' SDB monomyth :D , güzel yazı olmuş teşekkürler

Gayet güzel anlatıyorsun. Devam dostum...

Teşekkürler :)

Thank you for the contribution. It has been approved.

You can contact us on Discord.
[utopian-moderator]

Hey @monomyth I am @utopian-io. I have just upvoted you!

Achievements

  • Seems like you contribute quite often. AMAZING!

Community-Driven Witness!

I am the first and only Steem Community-Driven Witness. Participate on Discord. Lets GROW TOGETHER!

mooncryption-utopian-witness-gif

Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x

Coin Marketplace

STEEM 0.04
TRX 0.32
JST 0.077
BTC 63999.25
ETH 1662.28
USDT 1.00
SBD 0.42