下面是 Go 支持的基本类型:
1 | bool |
bool 类型表示一个布尔值,值为 true 或者 false。
1 | package main |
在上面的程序中,a 赋值为 true,b 赋值为 false。
c 赋值为 a && b。仅当 a 和 b 都为 true 时,操作符 && 才返回 true。因此,在这里 c 为 false。
当 a 或者 b 为 true 时,操作符 || 返回 true。在这里,由于 a 为 true,因此 d 也为 true。我们将得到程序的输出如下。
运行结果
1 | a: true b: false |
int8:表示 8 位有符号整型
大小:8 位
范围:-128~127
int16:表示 16 位有符号整型
大小:16 位
范围:-32768~32767
int32:表示 32 位有符号整型
大小:32 位
范围:-2147483648~2147483647
int64:表示 64 位有符号整型
大小:64 位
范围:-9223372036854775808~9223372036854775807
int:根据不同的底层平台(Underlying Platform),表示 32 或 64 位整型。除非对整型的大小有特定的需求,否则你通常应该使用 int 表示整型。
大小:在 32 位系统下是 32 位,而在 64 位系统下是 64 位。
范围:在 32 位系统下是 -2147483648~2147483647,而在 64 位系统是 -9223372036854775808~9223372036854775807。
1 | func sizeofval() { |
1 |
|
func floatfunc(){
a,b := 5.67,8.79
fmt.Printf(“type of a %T b %T \n”,a,b)
sum := a+b
dif := a-b
fmt.Println(“sum”,sum,”dif”,dif)
no1,no2 := 56,89
fmt.Println("sum",no1+no2,"dif",no1-no2)
}
1 | a 和 b 的类型根据赋值推断得出。在这里,a 和 b 的类型为 float64(float64 是浮点数的默认类型)。我们把 a 和 b 的和赋值给变量 sum,把 b 和 a 的差赋值给 diff,接下来打印 sum 和 diff。no1 和 no2 也进行了相同的计算。上述程序将会输出: |
func complexFunc() {
c1 := complex(5,7)
c2 := 8 + 27i
cadd := c1 + c2
fmt.Println(“c1”,c1)
fmt.Println(“sum”,cadd)
cmul := c1 *c2
fmt.Println(“product”,cmul)
}
1 |
|
func strFunc() {
first := “Naveen”
last := “Ramanathan”
name := first +” “+ last
fmt.Println(“My name is”,name)
}
1 | # 类型转换 |
func typeChangefunc() {
i := 55 //int
j := 67.8 //float64
// sum := i + j //不允许 int + float64
sum := i + int(j) //j is converted to int
fmt.Println(sum)
}`
Go 有着非常严格的强类型特征。Go 没有自动类型提升或类型转换。我们通过一个例子说明这意味着什么
上面的代码在 C 语言中是完全合法的,然而在 Go 中,却是行不通的。i 的类型是 int ,而 j 的类型是 float64 ,我们正试图把两个不同类型的数相加,Go 不允许这样的操作。如果运行程序,你会得到 main.go:10: invalid operation: i + j (mismatched types int and float64)。
要修复这个错误,i 和 j 应该是相同的类型。在这里,我们把 j 转换为 int 类型。把 v 转换为 T 类型的语法是 T(v)。