Skip to main content

Ciklas

M.Gzegozevskis...About 2 minGo programavimo kalbaGo

Veiksmų kartojimas ciklais (angl. Looping)

Programavimo kalba Go turi tik vieną raktinį žodį for aprašyti ciklui.
Ciklo struktūra yra tokia initialization (pradinė reikšmė); condition (sąlyga); post (veiksmas po įvykdytos ciklo iteracijos).

for initialization; condition; post{
       // sakiniai, kurie bus kartojami....
}

Pavyzdys naudojant for ciklą:

package main
  
import "fmt"

func main() { 
    // for ciklas 
    // ciklas pradedamas nuo i = 0 
    // vykdys iki kol sąlyga i < 4 bus tenkinama
    // reikšmė po įvykdytos ciklo iteracijos i++
    for i := 0; i < 4; i++ {
      fmt.Printf("Sveikas pasauli!\n")  
    }
}

Ekrane bus išvestas rezultatas:

Sveikas pasauli!
Sveikas pasauli!
Sveikas pasauli!
Sveikas pasauli!

Begalinis ciklas (angl. Infinite Loop) yra ciklas, kuris niekada nesibaigia. Pavyzdžiui:

package main
  
import "fmt"

func main() {
    // Begalinis ciklas
    for {
      fmt.Printf("Labas!\n")  
    }    
}

Analogiškai vietoje įprasto while ciklo naudojama for ciklo struktūra:

for condition {
    // sakiniai..
}

Pavyzdys naudojant for ciklą:

package main
  
import "fmt"

func main() {  
    // while ciklo analogas
    // for ciklas bus vykdomas iki kol sąlyga i < 3 bus tenkinama 
    i:= 0
    for i < 3 {
       i += 2
    }
    fmt.Println(i) 
}

Ciklas for naudojamas su range pagalbiniu žodžiu (angl. keyword):

for i, j:= range adresas{
   // sakiniai...
}

Pavyzdys naudojant for ciklą su range:

package main
  
import "fmt"

func main() {      
    adresas:= []string{"eif.viko.lt", "viko.lt", "programuoki.lt"} 
    // i ir j saugo sąrašo indeksą ir reikšmę
    for i, j:= range adresas {
       fmt.Println(i, j) 
    }   
}

Ekrane bus išvestas rezultatas:

    0 eif.viko.lt
    1 viko.lt
    2 programuoki.lt

For loop naudojamas darbui su simbolių eilutėmis (angl. String) pavyzdys:

for index, chr:= range str {
     // Sakiniai...
}

Pavyzdys su for ciklu ir simbolių eilute:

package main
  
import "fmt"

func main() {
    // Skaitomi žodžio "Krabas" simboliai pažingsniui
    for indeksas, simbolis:= range "Krabas" {
       fmt.Printf("Simbolio %s indeksas yra %d\n", simbolis, indeksas) 
    }
}

Ekrane bus išvestas rezultatas:

    Simbolio K indeksas yra 0
    Simbolio r indeksas yra 1
    Simbolio a indeksas yra 2
    Simbolio b indeksas yra 3
    Simbolio a indeksas yra 4
    Simbolio s indeksas yra 5

Ciklas for skirtas skaityti žodynui (angl. Map) struktūra:

for key, value := range map { 
     // Statement.. 
}

Pavyzdys naudojant range skaityti žodynui:

package main
  
import "fmt"
func main() {
    // žodyno naudojimas
    zodynas := map[string]string{
        "cat":"Katė",
        "dog":"Šuo",
        "water":"Vanduo",
    }
    for key, value:= range zodynas {
       fmt.Println(key, value) 
    }   
}

Ekrane bus išvestas rezultatas:

water Vanduo
cat Katė
dog Šuo

Lygiagrečiam programavimui (angl. Concurrency) naudojamas for ciklas su range skaityti kanalui (angl. Channel):

for item := range Channel { 
     // Sakiniai...
}

Pavyzdys skaityti kanalui:

package main
  
import "fmt"
 
func main() {
    // naujo kanalo sukūrimas kur bus int reikšmės
    kanalas := make(chan int)
    go func(){
        kanalas <- 100
        kanalas <- 1000
       kanalas <- 10000
       kanalas <- 100000
       close(kanalas)
    }()
    for i:= range kanalas {
       fmt.Println(i) 
    }
}

Ekrane bus išvestas rezultatas:

    100
    1000
    10000
    100000

Papildomi pavyzdžiai su for ciklu naudojant range:

package main

import "fmt"

func main() {
   /* sukuriamas Slice */
   numbers := []int{0,1,2,3,4,5,6,7,8} 
   
   /* atspausdinti skaičių sąrašą */
   for i:= range numbers {
      fmt.Println("Slice item",i,"is",numbers[i])
   }
   
   /* sukurti žodyną */
   countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo"}
   
   /* atspausdinti žodyną naudojant raktą */
   for country := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",countryCapitalMap[country])
   }
   
   /* spausdinti žodyną naudojant porą raktas,reikšmė */
   for country,capital := range countryCapitalMap {
      fmt.Println("Capital of",country,"is",capital)
   }
}

Ekrane bus išvedamas tekstas:

    Slice item 0 is 0
    Slice item 1 is 1
    Slice item 2 is 2
    Slice item 3 is 3
    Slice item 4 is 4
    Slice item 5 is 5
    Slice item 6 is 6
    Slice item 7 is 7
    Slice item 8 is 8
    Capital of France is Paris
    Capital of Italy is Rome
    Capital of Japan is Tokyo
    Capital of France is Paris
    Capital of Italy is Rome
    Capital of Japan is Tokyo
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8