golang的整型总类众多,但一般只是使用使用int或者uintt就好了,
package main import ( "fmt" "unsafe" ) func main() { var i1 int8 = 1 //1 byte var i2 int16 = 2 //2 byte var i3 int32 = 3 // 4 byte var i4 int64 = 4 // 8 byte var i5 int = 5 // 32位:4 64位:8 var i6 uint8 = 1 // 1 byte var i7 uint16 = 2 // 2 byte var i8 uint32 = 3 // 4 byte var i9 uint64 = 4 // 8 byte var i10 uint = 5 // 32位:4 64位:8 var i11 byte = 1 //相当于uint8 1 byte var i12 rune = 3 //相当于int32 4 byte var i13 uintptr = 6 // 32位:4 64位:8 fmt.Println(unsafe.Sizeof(i13)) //8 fmt.Println(i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13) //1 2 3 4 5 1 2 3 4 5 1 3 6 }
int类型和int32或者int64都不可以直接相加减,只有同类型(类型名相同)才能相加减,golang不支持隐式转换。
package main func main() { var i1 int = 1 var i2 int32 = 2 var i3 int64 = 3 i4 := i1 + i2 }
.\main.go:9:@H_502_19@ @H_502_19@invalid@H_502_19@ @H_502_19@operation:@H_502_19@ @H_502_19@i1@H_502_19@ @H_502_19@+@H_502_19@ @H_502_19@i2@H_502_19@ @H_502_19@(mismatched@H_502_19@ @H_502_19@types@H_502_19@ @H_502_19@int@H_502_19@ @H_502_19@and@H_502_19@ @H_502_19@int32)@H_502_19@
使用int(变量名强制转换)
package@H_502_19@ @H_502_19@main
import@H_502_19@ @H_502_19@(
@H_502_19@"fmt"@H_502_19@
)
func@H_502_19@ @H_502_19@main() @H_502_19@{
@H_502_19@var@H_502_19@ @H_502_19@i1 @H_502_19@int@H_502_19@ @H_502_19@= @H_502_19@1@H_502_19@
@H_502_19@var@H_502_19@ @H_502_19@i2 @H_502_19@int32@H_502_19@ @H_502_19@= @H_502_19@2@H_502_19@
@H_502_19@var@H_502_19@ @H_502_19@i3 @H_502_19@int64@H_502_19@ @H_502_19@= @H_502_19@3@H_502_19@
@H_502_19@i4 @H_502_19@:= @H_502_19@i1 @H_502_19@+ @H_502_19@int@H_502_19@(i2) @H_502_19@//int32强制转换为int@H_502_19@
@H_502_19@i5 @H_502_19@:= @H_502_19@i1 @H_502_19@+ @H_502_19@int@H_502_19@(i3) @H_502_19@//int64强制转换为int@H_502_19@
@H_502_19@fmt.Println(i4, @H_502_19@i5)
}