Professional Documents
Culture Documents
Predavanje 2 - Programski Jezik Go Nastavak
Predavanje 2 - Programski Jezik Go Nastavak
Pokazivači
1 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
/*
- * je pokazivac
- & je adresa
*/
func p oi nt er s Ex am pl e () {
i := 42
p := & i // pokazivac na i tj . u p smestamo adresu od i
fmt . Println (* p ) // defe renciran je pokazivaca , uzimamo vrednost
* p = 21 // postavljanje vrednosti i
fmt . Println (* p )
fmt . Println ( i ) // ispisi i
}
2 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Strukture
3 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
package main
func main () {
p := Person { " Milos " , " Simic " }
fmt . Println ( p . SayHi ())
p . SetName ( " Jovan " )
fmt . Println ( p . SayHi ())
}
4 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Prava pristupa
5 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
I Go ide jedan korak dalje...prethodno pravilo važi i za bilo koju funkciju u bilo kom
paketu
I Funkcije mogu da postoje nezaivsno od neke strukture
I Ako želimo da im pristupimo u nekom drugom fajlu/paketu moramo ih
eksportovati
I Moramo naziv funkcije početi sa velikim slovom
6 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
7 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
// na poziciju 0 stavljamo " Marc " , na poziciju 1 stavljamo " John "
names [0] = " Marc "
names [1] = " John "
8 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
I Statički nizovi nisu uvek pogodni jer se veličina mora znati unapred
I Zbot toga se koriste dinami’v cki nizovi, slice - identičan listi u drugim
programksim jezicima
I Slično se ponaša i slične operacije možemo izvoditi
9 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
slice := [] int {}
fmt . Println ( slice ) // []
slice = append ( slice , 3) // dodajemo broj 3 u slice
fmt . Println ( slice ) // [3]
10 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Mape
11 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
12 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Interfejsi
13 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
package main
Nastavak
func main () {
s := Student { " marko " , " markovic " , " ee -222/2012 " }
r := Radnik { " rastko " , " raicevic " , " 0 55 12 13 1 23 21 3 12 " }
display ( s )
display ( r )
}
15 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Konkurentnost — osnove
I Funkcije se mogu izvršavati konkurentno sa drugim funkcijama koristeći go rutine
(goroutines)
I Gorutine su lakše od niti
I Sinronizacija gorutina se vrši pomoću kanala
I Pozivaju se ključnom rečju go
I Main funkcija se izvršava u sopstevnoj gorutini
I Pokretanje gorutine odmah vrać a kontrolu pozivaocu:
I Ne šeka se kraj izvršavanja gorutine
I Sve povratne vrednosti gorutine se ignorišu
I Main gorutina mora biti pokrenuta da bi se bilo koja druga gorutina izvršavala
I Prekid main gorutin, prekida sve ostale gorutine — leaks
16 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
func main () {
hello ( " program " )
go hello ( " Go routine " )
go func ( caller string ) {
fmt . Println ( " Anonymous f : called by " + caller )
}( " Go routine " )
fmt . Scanln ()
}
17 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Kanali — osnove
18 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Paketi
\\ Razdvojeni paketi
import " fmt "
import " math "
19 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
20 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
\\ Ugnjezdeni paket
package main
import (
" fmt "
" math / rand "
)
func main () {
fmt . Println ( rand . Int (100))
}
\\ Alias paket
import (
f " fmt "
m " math "
)
func main () {
c := m . Exp2 (5)
f . Println ( c )
}
21 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Go mod
22 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
1) Kreiranje foldera
$ mkdir projects
$ cd projects
$ mkdir mymodule
2) Struktura foldera
| - - - projects
| - - - mymodule
3) In i ci ja li z ac ij a go mod alata
go mod init mymodule
Output
go : creating new go . mod : module mymodule
4) truktura projekta
| - - - projects
| - - - mymodule
| - - - go . mod
| - - - main . go
Dodatni materijali
I Tour of Go
I go mod
I Malo više o kanalima i gorutinama
I Razlika niti i gorutina
I Razlika procesi i niti
I The Go Programming Language
24 / 25
Programski jezik Go (golang) Upravljanje paketima Pitanja
Kraj predavanja
Pitanja? :)
25 / 25