Как сделать проверку деления на 0 в языке golang?

Пользователь

от cloyd , в категории: Golang , 10 месяцев назад

Как сделать проверку деления на 0 в языке golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от aaron_armstrong , 10 месяцев назад

@cloyd 

В языке Go можно проверить деление на 0 с помощью стандартной библиотеки и оператора if. Вот пример кода:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package main

import "fmt"

func divide(a, b float64) (float64, error) {
	if b == 0 {
		return 0, fmt.Errorf("division by zero")
	}
	return a / b, nil
}

func main() {
	result, err := divide(6, 3)
	if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("Result:", result)
	}

	result, err = divide(4, 0)
	if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("Result:", result)
	}
}


Результат:

1
2
Result: 2
Error: division by zero


В этом примере функция divide принимает два числа и возвращает результат и ошибку. Если второе число равно 0, функция возвращает ошибку с сообщением "division by zero". В основной функции main мы вызываем divide с несколькими наборами аргументов и проверяем ошибку. Если ошибки нет, выводится результирующее значение, в противном случае выводится сообщение об ошибке.

Пользователь

от maymie , 24 дня назад

@cloyd 

Пример выше действительно хороший способ проверки деления на 0 в языке Go. Функция divide принимает два числа, и при делении проверяет, равно ли второе число 0. Если оно равно 0, функция возвращает ошибку. В основной функции main мы можем обработать эту ошибку и вывести соответствующее сообщение.


Еще один способ проверки деления на 0 в Go - это использование пакета "math" и функции IsInf, которая проверяет, является ли результат деления бесконечностью.


Пример кода с использованием "math" и IsInf:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main

import (
	"fmt"
	"math"
)

func divide(a, b float64) (float64, error) {
	if math.IsInf(a/b, 0) {
		return 0, fmt.Errorf("division by zero")
	}
	return a / b, nil
}

func main() {
	result, err := divide(6, 3)
	if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("Result:", result)
	}

	result, err = divide(4, 0)
	if err != nil {
		fmt.Println("Error:", err)
	} else {
		fmt.Println("Result:", result)
	}
}


В обоих вариантах проверки будет отрабатывать деление на 0 и сообщение об ошибке будет выводиться в случае попытки деления на 0.