Строка в целое в Go
Текст из цифр переводят в int функцией
strconv.Atoi. Она возвращает число
и ошибку. Успех означает, что ошибка равна
nil; иначе в err лежит причина
сбоя. После перевода плюс складывает числа,
а не склеивает текст:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "12"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("fail")
return
}
fmt.Println(num + 3)
}
Минус в тексте допустим:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "-4"
num, err := strconv.Atoi(str)
if err != nil {
fmt.Println("fail")
return
}
fmt.Println(num)
}
Если цифр в тексте нет, разбор не удается
и err не равен nil:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "abc"
_, err := strconv.Atoi(str)
if err != nil {
fmt.Println("fail")
}
}
Весь текст должен быть числом: буква
в конце или точка для целого делают разбор
неудачным. Из "12a" и "1.5"
число так не получить:
package main
import (
"fmt"
"strconv"
)
func main() {
str1 := "12a"
_, err1 := strconv.Atoi(str1)
if err1 != nil {
fmt.Println("fail")
}
str2 := "1.5"
_, err2 := strconv.Atoi(str2)
if err2 != nil {
fmt.Println("fail")
}
}
Число, которое не влезает в int,
тоже дает ошибку:
package main
import (
"fmt"
"strconv"
)
func main() {
str := "3000000000"
_, err := strconv.Atoi(str)
if err != nil {
fmt.Println("fail")
}
}
Дан код:
str1 := "8"
str2 := "5"
Найдите сумму чисел из этих строк и выведите ее.
Дан код:
str1 := "14"
str2 := "6"
Найдите сумму чисел из этих строк и выведите ее.
Дан код:
str1 := "20"
str2 := "7"
Найдите разность чисел из этих строк: вычтите второе из первого и выведите ее.
Дан код:
str := "-9"
Найдите число из этой строки и выведите его.