Напишем простую программу на Го, которая будет брать строку, разбивать ее на элементы среза, конвертируя каждый элемент в цифру.
Для начала весь код, а ниже я его подробно разберу:
package main import ( "bufio" "fmt" "os" "strconv" "strings" ) func main() { r := bufio.NewReader(os.Stdin) str, _ := r.ReadString('\n') str = strings.TrimSpace(str) // str to slice s_str := strings.Split(str, " ") fmt.Println(s_str) s := make([]int, len(s_str)) for i := range s_str { s[i], _ = strconv.Atoi(s_str[i]) s[i] = s[i] + 1 // test } fmt.Println(s) }
Сначала мы создаем новый считыватель (NewWriter) r
, используя пакет bufio
и стандартный ввод (os.Stdin
).
Затем считываем ввод пользователя — строку чисел, разделенных пробелами, используя метод ReadString
, который возвращает строку до аргумента \n,
который указывает, что функция должна остановить чтение, когда встретит символ новой строки.
Метод TrimSpace
используется для удаления пробелов из начала и конца строки, а метод Split
— для разбиения строки на фрагменты на основе указанного разделителя (в данном случае пробела » «).
Теперь мы создаем срез (slice) s
целых чисел создается с помощью функции make с длиной s_str
и перебираем его в цикле for, преобразуя каждую строку в целое число с помощью функции Atoi
из пакета strconv
.
Аллилуйа, теперь мы знаем, как преобразовать строку чисел, разделенных пробелами, в срез целых чисел в Go 🙂