You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Açıkçası bu hiç hoş değil. Ayrıca, alan fonksiyonu bir dairenin veya dikdörtgenin özelliği olmalıdır.
38
38
39
-
İşte `method` un devreye gireceği nokta burasıdır. `method`, bir türe/tipe bağlı fonksiyondur. `func` anahtar sözcüğünün, bu methodun ana gövdesi olan `receiver` adlı bit parametreye sahip olması haricinde, fonksiyonlar benzer bir sözdizimi vardır.
39
+
İşte `method` un devreye gireceği nokta burasıdır. `method`, bir türe/tipe bağlı fonksiyondur. `func` anahtar sözcüğünün, bu methodun ana gövdesi olan `receiver` adlı bit parametreye sahip olması haricinde, fonksiyonlara benzer bir sözdizimi vardır.
40
40
41
-
Aynı örneği kullanarak, `Dikdortgen.Alan()` çevresel bir fonksiyon yerine doğrudan Dikdortgen'e aittir. Daha spesifik olarak, `yukseklik`, `genislik` ve `Alan()` hepsi Dikdortgen'e aittir.
41
+
Aynı örneği kullanarak, `Dikdortgen.Alan()` çevresel bir fonksiyon olması yerine doğrudan Dikdortgen'e ait bir methoddur. Daha spesifik olarak, `yukseklik`, `genislik` ve `Alan()` hepsi Dikdortgen'e aittir.
Figure 2.9 Methodlar farklı struct larda farklıdırlar.
99
+
Şekil 2.9 Methodlar farklı struct larda farklıdırlar.
100
100
101
-
Yukarıdaki örnakte Alan() methodu hem Dikdortgen hem de Daire'de mevcuttur, bu nedenle alıcıları Dikdortgen ve Daire'dir.
101
+
Yukarıdaki örnekte Alan() methodu hem Dikdortgen hem de Daire'de mevcuttur, bu nedenle alıcıları Dikdortgen ve Daire'dir.
102
102
103
-
One thing that's worth noting is that the method with a dotted line means the receiver is passed by value, not by reference. The difference between them is that a method can change its receiver's values when the receiver is passed by reference, and it gets a copy of the receiver when the receiver is passed by value.
103
+
Önemsiz bir detay olarak bir method noktalı çizgi ile kullanılmışsa anlamı alıcıya referans olarak değil değer olarak geçirilmiştir demektir. Aralarındaki fark, bir methodun, alıcısı referansla geçildiğinde alıcının değerlerini değiştirebilmesi ve değer olarak geçildiğinde ise alıcının bir kopyasını almasıdır.
104
104
105
105
Alıcı sadece bir struct'mı olmalıdır? Tabii ki değil. Herhangibir tür/tip methodun alıcısı olabilir. Özelleştirilmiş türler/tipler hakkında kafanız karışabilir. struct özel bir tür/tip dir - daha birçok özelleştirilmiş tür/tip yer almaktadır.
106
106
@@ -200,7 +200,7 @@ func main() {
200
200
fmt.Println("En büyük kutu", kutular.EnBuyuklerininRengi().String())
Bazı sabitleri ve özelleştirilmiş tür/tipleri tanımlarız
211
211
212
-
-`Renk`'i `byte` 'ın takma adı olarak kullanın.
212
+
-`Renk`'i `byte` 'ın takma adı olarak kullanın.
213
213
- Hacim, yukseklik, genislik, derinlik ve renk alanlarını içeren `Kutu` struct ını tanımlayın.
214
214
-`Kutu` yu alanı olarak alan `KutuListesi` strruct ı tanımlayın.
215
215
@@ -231,88 +231,88 @@ Bir alıcının bir methodun ilk argümanı olduğunu görürsek, nasıl çalı
231
231
232
232
Neden RenkAta() methodunda `k.Renk = r` yerine` (*k).Renk = r` kullanmadığımızı soruyor olabilirsiniz. Her iki kullanımda da sorun yok çünkü Go bu görevi nasıl gerçekleştireceğini bilir. Şimdi Go'nun daha büyüleyici olduğunu düşünmüyor musunuz?
233
233
234
-
You may also be asking whether we should use `(&kl[i]).RenkAta(SIYAH)`in `SiyahaBoya` because we pass a pointer to `RenkAta`. Again, either one is OK because Go knows how to interpret it!
234
+
Ayrıca `SiyahaBoya` methodunda da neden `(&kl[i]).RenkAta(SIYAH)`kullanıp kullanmamamız gerektiğini de sorabilirsiniz. Çünkü `RenkAta` methoduna bir işaretçi geçmişizdir zaten. Yine iki kullanımda Go için problem değil, ikisinin de nasıl yorumlanacağını bilir!
235
235
236
-
### Inheritance of method
236
+
### method kalıtımı
237
237
238
-
We learned about inheritance of fields in the last section. Similarly, we also have method inheritance in Go. If an anonymous field has methods, then the struct that contains the field will have all the methods from it as well.
238
+
Son bölümde alanların kalıtımını öğrendik. Benzer şekilde Go'da method kalıtımı da vardır. Eğer anonim bir alanın methodları varsa, alanı içeren struct da ondaki tüm methodlara sahip olacaktır.
239
239
```Go
240
240
package main
241
241
242
242
import"fmt"
243
243
244
-
typeHumanstruct {
245
-
namestring
246
-
ageint
247
-
phonestring
244
+
typeInsanstruct {
245
+
adstring
246
+
yasint
247
+
telefonstring
248
248
}
249
249
250
-
typeStudentstruct {
251
-
Human// anonymous field
252
-
schoolstring
250
+
typeOgrencistruct {
251
+
Insan// anonymous field
252
+
okulstring
253
253
}
254
254
255
-
typeEmployeestruct {
256
-
Human
257
-
companystring
255
+
typeCalisanstruct {
256
+
Insan
257
+
sirketstring
258
258
}
259
259
260
-
//define a method in Human
261
-
func(h *Human) SayHi() {
262
-
fmt.Printf("Hi, I am%s you can call me on %s\n", h.name, h.phone)
260
+
//Insan içinde bir method tanımı
261
+
func(i *Insan) Merhaba() {
262
+
fmt.Printf("Merhaba, Benim adım%s. Bana %s nolu telefondan ulaşabilirsiniz.\n", i.ad, i.telefon)
If we want Employee to have its own method `SayHi`, we can define a method that has the same name in Employee, and it will hide `SayHi` in Human when we call it.
275
+
Eğer Calisan'ın kendi `Merhaba` methoduna sahip olmasını istiyorsak, Calisan'da aynı adı tasıyan bir method tanımlayabiliriz ve böylece `Merhaba` methodunu çağırdığımızda Insan içinde tanımlı olan method gizlenecektir.
276
276
```Go
277
277
package main
278
278
279
279
import"fmt"
280
280
281
-
typeHumanstruct {
282
-
namestring
283
-
ageint
284
-
phonestring
281
+
typeInsanstruct {
282
+
adstring
283
+
yasint
284
+
telefonstring
285
285
}
286
286
287
-
typeStudentstruct {
288
-
Human
289
-
schoolstring
287
+
typeOgrencistruct {
288
+
Insan
289
+
okulstring
290
290
}
291
291
292
-
typeEmployeestruct {
293
-
Human
294
-
companystring
292
+
typeCalisanstruct {
293
+
Insan
294
+
sirketstring
295
295
}
296
296
297
-
func(h *Human) SayHi() {
298
-
fmt.Printf("Hi, I am%s you can call me on %s\n", h.name, h.phone)
297
+
func(i *Insan) Merhaba() {
298
+
fmt.Printf("Merhaba, Benim adım%s. Bana %s nolu telefondan ulaşabilirsiniz.\n", i.ad, i.telefon)
299
299
}
300
300
301
-
func(e *Employee) SayHi() {
302
-
fmt.Printf("Hi, I am%s, I work at %s. Call me on%s\n", e.name,
303
-
e.company, e.phone) //Yes you can split into 2 lines here.
You are able to write an Object-oriented program now, and methods use rule of capital letter to decide whether public or private as well.
315
+
Artık Nesne-yönelimli program yazabiliyorsunuz. methodların dışarıya açık olup olmayacağını(public/private) method isminin ilk harfini büyük/küçük yaparak sağlayabilirsiniz.
0 commit comments