Funksionet
- Funksionet janë njësi të ripërdorshme të kodit.
- Një funksion definohet me fjalën kyçe
func. - Funksioni deklarohet një herë dhe mund të përdoret shumë herë.
- Funksionet në Go mund të kthejnë më tepër se një vlerë
- Funksionet në Go mund të lidhen me një tip të caktuar, me ç’rast ai tip quhet receiver (pranues)
- Parametrat barten me vlerë (pass-by-value), që do të thotë se vlerat e parametrave kopjohen.
Go kërkon kthime eksplicite (explicit returns), pra funksioni nuk do ta kthejë me return vlerën e shprehjes së fundit në funksion. Megjithatë, nëse emri i një variabli ceket si vlerë kthyese në rreshtin e deklarimit të funksionit, funksioni do ta kthejë atë vlerë pa e cekur emrin e variablit. Në shembullin vijues, te nënshkrimi i funksionit (function signature) variabli c i tipit int është deklaruar si variabël vlerën e të cilit do ta kthejë urdhëri return.
1 package main
2
3 import (
4 "fmt"
5 )
6
7 func main() {
8 fmt.Println(Shumezo(3, 5))
9 }
10
11 func Shumezo(a, b int) (c int) {
12 c = a * b
13 return
14 }
https://play.golang.org/p/EO5SJZftjMm
Rezultati:
15
Closures
Recursion
Funksionet variadike
1 package main
2
3 import "fmt"
4
5 func main() {
6 fmt.Println(mbledh(7, 3))
7 fmt.Println(mbledh(9, 2, 1))
8 }
9
10 func mbledh(arg ...int) int {
11 shuma := 0
12 for _, v := range arg {
13 shuma += v
14 }
15 return shuma
16 }
https://play.golang.org/p/W5uTt_yTsRa
Funksion/metodë me pranues
1 package main
2
3 import "fmt"
4
5 type Katerkendeshi struct {
6 a, b int
7 }
8
9 func (r Katerkendeshi) Siperfaqja() int {
10 return r.a* r.b
11 }
12
13 func main() {
14 x := Katerkendeshi{a: 5, b: 3}
15 fmt.Println("Siperfaqja: ", x.Siperfaqja())
16 }
https://play.golang.org/p/s85X-9RHTMF
Rezultati:
Siperfaqja: 15
Built-in functions
Një numër i vogël i funksioneve është i paradefinuar, për të cilët nuk ka nevojë të importohet asnjë pako.
close
Përdoret në komunikim të kanaleve, ku shërben për mbylljen e kanalit.
delete
Përdoret për fshirjen e të dhënave në maps.
len dhe cap
Funksioni len tregon gjatësinë e një stringu si dhe numrin e anëtarëve të rriskave (slices) dhe vargjeve (arrays).
new
Përdoret për rezervimin e memorjes për tipet e të dhënave e definuara nga përdoruesi (user defined data types).
make
Përdoret për rezervimin e memorjes për tipet e integruara ( built-in types), siç janë: hartat (maps), rriskat (slices) dhe kanalet (channels).
copy
Përdoret për kopjimin e rriskave.
append
Përdoret për bashkangjitjen e rriskave.
panic dhe recover
Përdoret në mekanizmin e raportimit të gabimeve.
print dhe println
Funksione të nivelit të ultë që mund të përdoren pa përdorimin e pakos fmt. Kryesisht përdoren për debugging.
complex, real and imag
Përdoren për punë me numrat kompleksë.