Есть ли способ конвертировать целые числа в bools в go или наоборот?

Есть ли встроенный способ бросить bools на целые числа или наоборот? Я пробовал нормальное кастинг, но поскольку они используют разные базовые типы, преобразование невозможно классическим способом. Я выложил некоторые спецификации, и еще не нашел ответа.

Ответы

Ответ 1

Int to bool просто, просто x != 0 выполнит трюк. Чтобы пойти другим путем, так как Go не поддерживает тройной оператор, вам нужно будет сделать:

var x int
if b {
    x = 1
} else {
    x = 0
}

Вы могли бы, конечно, поместить это в функцию:

func Btoi(b bool) int {
    if b {
        return 1
    }
    return 0
 }

Существует так много возможных логических интерпретаций целых чисел, ни одна из них не обязательно естественна, что имеет смысл сказать, что вы имеете в виду.

В моем опыте (YMMV) вам не нужно часто это делать, если вы пишете хороший код. Иногда это привлекательно, чтобы иметь возможность написать математическое выражение, основанное на логическом значении, но ваши сторонники будут благодарны вам за то, что вы его избегали.

Ответ 2

var a int = 3
var b bool = a != 0

Я просто упал в демонстрационный блок на главной странице golang:

package main

import "fmt"

func main() {
 var a int = 3
 var b bool = a != 0
    fmt.Println("Hello, 世界", b)
}

Вывод:

Hello, 世界 true

Ответ 3

Вот трюк для преобразования из int в bool:

x := 0
newBool := !(x == 0) // returns false

где x - это переменная int, которую вы хотите преобразовать.