2016-11-26 1 views

답변

2

Go에는 암시 적 변환이 없습니다. 다른 유형의 두 값을 비교하거나 산술을 수행하려면 수동 및 명시 적 유형 변환을 수행해야합니다.

a := 3   // numerical constant 3 defaults to int 
b := uint(2) 
c := a < b  // compiler error 
d := a < int(b) // OK 
2

go는 비교를 포함하여 모든 작업에 explicit type conversions 만 사용합니다. 예 확실히, 그래서

if int64(a) == b {...} 

을 :

tmp/sandbox428200464/main.go:13: invalid operation: a == b (mismatched types uint64 and int64)

비교 명시 적으로 같은 유형의 변수를 캐스팅해야 할 일 :

var a uint64 
var b int64 

a = 1 
b = 1 
if a == b { 
    fmt.Println("Equal") 
} 

이 조각은 오류가 발생할 것입니다
, 그렇게 말할 수 있다면 고정되어 있습니다.

Playgound에 대한 스 니펫.

관련 문제