Golang задачи с собеседований
4.55K subscribers
489 photos
6 videos
12 files
242 links
Задачи, тесты и теоретические вопросы по Go. Так же по gin, grpc, горутинах, архитектуре api и http стэку.

Прислать задачу/вопрос в дар: @cyberJohnny
Сотрудничество: @cyberJohnny
Download Telegram
👨🏻‍💻 Вопрос:

Непоследовательный вывод символов в консоль

Хотел написать программу генерации паролей для тренировки, при написании допустил ошибку(начиная со 2 ифа я генерил не диапазон и прибавлял начальное значение, а наоборот), и наткнулся на большую неожиданность. Почему-то вывод работает не последовательно. В конце должно выводиться слово ata , но оно выводится в центре, а должно быть в конце:

6CMW
#1BS&ata"&6,#
соответсвие символов кодам смотрю по таблице. Если выводить просто коды, то вывод следующий:

25
29
16
54
67
77
31
87
20
12
15
65
37
43
51
34
38
54
17
28
44
35
13
29
30
35
49
66
83
38
30
22
ata
Я понял, что 6CWM это коды которые начинаются с 54,67 и далее выводит все видимые символы(до 54 тоже символы не видимы), где-то видимо там же и перенос строки образуется

Максимально упростил код, разбил по отдельным ифам, всё равно ata в середине

сам код чтобы запустить

сам код чтобы был тут:

package main
import ("fmt"
"math/rand"
)

func main() {
length := 32
for i := 0; i < length; i++ {
var temp int
var choise int
choise = rand.Intn(4)
if choise == 0{
temp = rand.Intn(26) + 65 //big symbs
}
if choise == 1{
temp = rand.Intn(48) + 10 //numbers
}
if choise == 2{
temp = rand.Intn(97) + 26 //small symbs
}
if choise == 3{
temp = rand.Intn(33) + 15// cpec symbs
}
fmt.Printf("%c",temp)
// fmt.Println(temp)
}
fmt.Printf("%c",'a')
fmt.Printf("%c",116)
fmt.Printf("%c",'a')
}

Но на самый главный вопрос я ответа не нахожу: почему слово ata выводится в середине. В правильной версии такого нет.

Golang задачи с собеседований