Golang教程:(四)类型
原文:https://golangbot.com/types/ 这是本Golang系列教程的第四篇。 你可以阅读 Golang教程:(三)变量 来学习有关变量的知识。 下面是 Go 支持的基本类型:
bool
package main
import "fmt"
func main() {
var a bool = true
b := false
fmt.Println("a:",a,"b:",b)
c := a && b
fmt.Println("c:",c)
d := a || b
fmt.Println("d:",d)
}
这里
或操作符( a: true b: false
c: false
d: true
有符号整型int8:表示8位有符号整数 int16:表示16位有符号整数 int32: 表示32位有符号整数 int64: 表示64位有符号整数 int: 根据底层平台(underlying platform)不同,表示32或64位整数。在实际编程中,除非对大小有明确的要求,否则一般应该使用 int 表示整数。 package main
import "fmt"
func main() {
var a int = 89
b := 95
fmt.Println("value of a is","and b is",b)
}
运行上面的程序,输出结果为: value of a is 89 and b is 95
在上面的程序中, 变量的类型可以在 下面的程序打印变量 package main
import (
"fmt"
"unsafe"
)
func main() {
var a int = 89
b := 95
fmt.Println("value of a is",b)
fmt.Printf("type of a is %T size of a is %d",unsafe.Sizeof(a)) //type and size of a
fmt.Printf("ntype of b is %T size of b is %d",b,unsafe.Sizeof(b)) //type and size of b
}
运行上面的程序,输出如下: value of a is 89 and b is 95
type of a is int size of a is 4
type of b is int size of b is 4
从上面的输出我们可以推断 无符号整型uint8: 表示8位无符号整型 uint16: 表示16位无符号整型 uint32: 表示32位无符号整型 uint64: 表示64位无符号整型 uint : 根据底层平台不同表示32或64位无符号整型 浮点类型float32:32位浮点型 下面的程序演示了整型和浮点数类型: package main
import (
"fmt"
)
func main() {
a,b := 5.67, 8.97
fmt.Printf("type of a %T b %Tn",b)
sum := a + b
diff := a - b
fmt.Println("sum",sum,"diff",diff)
no1,no2 := 56, 89
fmt.Println("sum",no1+no2,no1-no2)
}
变量 type of a float64 b float64
sum 14.64 diff -3.3000000000000007
sum 145 diff -33
复数类型complex64:实部和虚部都是 通过内置函数 complex 来构造一个包含实部和虚部的复数。它的原型为: func complex(r,i FloatType) ComplexType
它接收一个实部和一个虚部为参数并返回一个复数类型。实部和虚部应该为同一类型( 复数也可以通过简短声明语法来创建: c := 6 + 7i
让我们写一个小程序来了解复数: package main
import (
"fmt"
)
func main() {
c1 := complex(5, 7)
c2 := 8 + 27i
cadd := c1 + c2
fmt.Println("sum:",cadd)
cmul := c1 * c2
fmt.Println("product:",cmul)
}
在上面的程序中, sum: (13+34i)
product: (-149+191i)
其他数字类型
我们将在学习 字符串类型在Go中字符串(String)是 让我们写一个程序来了解字符串: package main
import (
"fmt"
)
func main() {
first := "Naveen"
last := "Ramanathan"
name := first +" "+ last
fmt.Println("My name is",name)
}
在上面的程序中, My name is Naveen Ramanathan
还有许多操作可应用于字符串。我们将用单独的一篇教程来介绍它们。 类型转换Go是强类型的语言,没有隐式的类型提升和转换。让我们通过一个例子说明这意味着什么: package main
import (
"fmt"
)
func main() {
i := 55 //int
j := 67.8 //float64
sum := i + j //int + float64 not allowed
fmt.Println(sum)
}
上面的代码在C语言中是完全合法的,但是在Go中却不是。 为了修复这个错误,我们应该将 package main
import (
"fmt"
)
func main() {
i := 55 //int
j := 67.8 //float64
sum := i + int(j) //j is converted to int
fmt.Println(sum)
}
现在运行上面的程序,可以得到正确的输出结果: 在赋值时情况也是如此,将一个变量赋值给另一个类型不同的变量时必须显式转型。下面的程序说明了这一点: package main
import (
"fmt"
)
func main() {
i := 10
var j float64 = float64(i) //this statement will not work without explicit conversion
fmt.Println("j",j)
}
在 感谢阅读。 目录 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |