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ë.