Ввод переменных из консоли

2,446 views
Skip to first unread message

Tony Raven

unread,
Apr 2, 2015, 9:41:54 AM4/2/15
to gola...@googlegroups.com
Недавно попробовал написать простую программу на GO выводящую четные числа из трех введенных. В итоге после ввода первой переменной тут же проскакивает предложение ввести вторую и третью. Вводя второе число почему то к нему приравнивается вторая и третья переменная.
Код
// lr9_5 project main.go package main
 

 
import (
     
"fmt"
 
)
 

 func main
() {
     
var a, b, c int
     fmt
.Printf("A")
     fmt
.Scanf("%d", &a)
     fmt
.Printf("B")
     fmt
.Scanf("%d", &b)
     fmt
.Printf("C")
     fmt
.Scanf("%d", &c)
     
if a%2 == 0 {
         fmt
.Println("a четное")
     
}
     
if b%2 == 0 {
         fmt
.Println("b четное")
     
}
     
if c%2 == 0 {
         fmt
.Println("c четное")
     
}
 
}
Пожалуйста объясните в чем косяк и пните в нужном направлении

Aln Kapa

unread,
Apr 2, 2015, 9:57:44 AM4/2/15
to gola...@googlegroups.com
Попробуйте написать так, и по гуглить.
_, err := fmt.Scanf("%d",&b)
if err != nil {
    panic(err)
}


2 апреля 2015 г., 15:51 пользователь Tony Raven <blackr...@gmail.com> написал:

--
Вы получили это сообщение, поскольку подписаны на группу "Golang Russian".
Чтобы отменить подписку на эту группу и больше не получать от нее сообщения, отправьте письмо на электронный адрес golang-ru+...@googlegroups.com.
Чтобы настроить другие параметры, перейдите по ссылке https://groups.google.com/d/optout.

Tony Raven

unread,
Apr 2, 2015, 10:04:48 AM4/2/15
to gola...@googlegroups.com
Panic: unexpected newline

четверг, 2 апреля 2015 г., 18:57:44 UTC+5 пользователь Aln Kapa написал:

Aln Kapa

unread,
Apr 2, 2015, 10:12:03 AM4/2/15
to gola...@googlegroups.com
Короче так, я думаю, что все потоки в GO не блокируемые. По этому у вас и не получается "повисеть" на Scanf. Вам надо делать цикл и в нем читать os.Stdin.
 

2 апреля 2015 г., 17:04 пользователь Tony Raven <blackr...@gmail.com> написал:

Vladimir Solonin

unread,
Apr 2, 2015, 10:32:38 AM4/2/15
to gola...@googlegroups.com
У меня все работает нормально.
Вот результат(пробелы после букв я добавил):
A 1
B 2
C 3
b четное



четверг, 2 апреля 2015 г., 16:41:54 UTC+3 пользователь Tony Raven написал:

Владимир Петров

unread,
Apr 2, 2015, 2:45:28 PM4/2/15
to gola...@googlegroups.com
Тоже работает как надо.
Aln, нет, по-умолчанию stdin блокирующий (блокируется на чтении, если его буфер пуст).
Tony, на какой системе запускаете код?


2 апреля 2015 г., 17:32 пользователь Vladimir Solonin <solo...@gmail.com> написал:

Tony Raven

unread,
Apr 2, 2015, 4:01:22 PM4/2/15
to gola...@googlegroups.com
Windows 7 x64

четверг, 2 апреля 2015 г., 23:45:28 UTC+5 пользователь Владимир Петров написал:

Alex

unread,
Aug 28, 2017, 10:58:40 AM8/28/17
to Golang Russian
Если пишете под Линукс - fmt.Scanf("%d", &var), если под Виндовс fmt.Scanf("%d \n", &var)


четверг, 2 апреля 2015 г., 16:41:54 UTC+3 пользователь Tony Raven написал:
Недавно попробовал написать простую программу на GO выводящую четные числа из трех введенных. В итоге после ввода первой переменной тут же проскакивает предложение ввести вторую и третью. Вводя второе число почему то к нему приравнивается вторая и третья переменная.
Reply all
Reply to author
Forward
0 new messages