Skip to main content

Įvedimas iš klaviatūros

M.Gzegozevskis...About 2 minGo programavimo kalbaGo

Darbui su įvedimu iš klaviatūros naudojamas fmt paketas

Trys pagrindinės funkcijos teksto įvedimui iš klaviatūros:

  • fmt.Scan(), nuskaitomas žodis
  • fmt.Scanln(), nuskaitoma eilutė
  • fmt.Scanf(), nuskaitome su formatu

Pavyzdys naudojant scan funkciją:

package main
import "fmt"

func main() {
  var name string

  // nuskaitoma reikšmė vardas
  fmt.Print("Enter your name: ")
  fmt.Scan(&name)

  fmt.Printf("Name: %s", name)
}

Ekrane bus išvestas tekstas:

Enter your name: Rosie
Name: Rosie

Įvedūs visą sakinį su keliais žodžiais, ekrane su Scan() funkcija bus išvestas tik pirmas žodis:

package main
import "fmt"

func main() {
  var language string
  // nuskaitoma reikšmė vardas
  fmt.Print("Enter your favorite language: ")
  fmt.Scan(&language)
  fmt.Printf("Favorite Language: %s", language)
}

Ekrane bus išvestas tekstas:

Enter your favorite language: Go Programming
Favorite Language: Go

Jeigu reikia skaityti keletą žodžių galime naudoti tą pačią Scan() funkciją:

package main
import "fmt"

func main() {

  var name string
  var age int
    
  // Nuskaitomas vardas ir amžius 
  // galima įvesti po vieną arba iš karto abu name ir age kintamuosius atskiriant tarpu
  fmt.Println("Enter your name and age:")
  fmt.Scan(&name, &age)
  fmt.Printf("Name: %s\nAge: %d", name, age)
} 

Ekranas bus išvestas tekstas perkelaint skaičių į naują eilutę jeigu spausime enter mygtuką po pirmo įvesto simbolio:

Enter your name and age:
Maria
27
Name: Maria
Age: 27

Jeigu įvedimo metu mes nurodysime abi reikšmes tada ekrane bus išvestas tekstas:

Enter your name and age:
Maria 27
Name: Maria
Age: 27

Jeigu reikia, kad būtų skaitoma visa eilutė, tada galima naudoti Scanln() funkciją:

package main
import "fmt"

func main() {
  var name string
  var age int
  
  fmt.Println("Enter your name and age:")
  fmt.Scanln(&name, &age)
  fmt.Printf("Name: %s\nAge: %d", name, age)
}

Ekrane bus išvestas tekstas jeigu spausime enter mygtuką po pirmo įvesto simbolio:

Enter your name and age:
Maria
Name: Maria
Age: 0

Kad išvengti šio efekto galima naudoti Scanln() funkciją ir įvesti visą sakinį atskiriant žodžius tarpais. Ekrane bus išvestas tekstas:

Enter your name and age:
Maria 27
Name: Maria
Age: 27

Scanf() funkcija naudojama nuskaityti įvestį su formatu. Pavyzdys:

package main
import "fmt"

func main() {
  var name string
  var age int

  // nuskaitomas vardas ir amžius nurodant formatą
  fmt.Println("Enter your name and age:")
  fmt.Scanf("%s %d", &name, &age) 
  fmt.Printf("Name: %s\nAge: %d", name, age)
}

Ekrane bus išvedamas tekstas su papildomai nurodytu formatu %s(tekstas), %d (sveikas skaičius) kokio tipo reikšmės yra naudojamos įvesčiai:

Enter your name and age:
Maria 27
Name: Maria
Age: 27

Pagrindinės formatų žymės:

  • integer %d
  • float %g
  • string %s
  • bool %t
    Pavyzdys su formatu naudojant kelis parametrus %g ir %t:
package main
import "fmt"

func main() {
  var temperature float32
  var sunny bool

  // nuskaitomas float tipas
  fmt.Println("Enter the current temperature:")
  fmt.Scanf("%g", &temperature)

  // nuskaitomas bool tipas
  fmt.Println("Is the day sunny?")
  fmt.Scanf("%t", &sunny)
  fmt.Printf("Current temperature: %g\nIs the day Sunny? %t", temperature, sunny)
}

Ekrane bus išvestas tekstas:

Enter the current temperature:
31.2
Is the day sunny?
true
Current temperature: 31.2
Is the day Sunny? true
Comments
  • Latest
  • Oldest
  • Hottest
Powered by Waline v2.15.8