Go 语言数据类型
在 Go 编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
Go 语言按类别有以下几种数据类型:
在 Go 编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。
go语言的数据类型有:
1、布尔型,值只可以是常量true或false;
2、数字类型,支持整型和浮点型数字,并且支持复数;
3、字符串类型,是一串固定长度的字符连接起来的字符序列;
4、指针类型;
5、数组类型;
6、结构化类型;
7、Channel类型;
8、函数类型;
9、切片类型;
10、接口类型;
11、Map类型。
整型分为两个大类: 按分配空间长度分为:int8、int16、int32、int64, 对应的无符号整型:uint8、uint16、uint32、uint64
其中,uint8 就是我们熟知的 byte 型,int16 对应C语言中的short 型,int64 对应C语言中的 long 型。
浮点型
Go语言支持两种浮点型数:float32 和 float64 。
这两种浮点型数据格式遵循IEEE 754标准:
float32 的浮点数的最大范围约为3.4e38,可以使用常量定义:math.MaxFloat32。 float64 的浮点数的最大范围约为 1.8e308,可以使用一个常量定义:math.MaxFloat64。 复数 Go原生支持复数:complex64 和 complex128
复数有实部和虚部,complex64的实部和虚部为32位,complex128的实部和虚部为64位。
其他数字类型
以下列出了其他更多的数字类型:
int uint的大小与使用者的电脑操作系统位数有关。
Go 语言变量作用域
作用域为已声明标识符所表示的常量、类型、变量、函数或包在源代码中的作用范围。
Go 语言中变量可以在三个地方声明:
- 函数内定义的变量称为局部变量
- 函数外定义的变量称为全局变量
- 函数定义中的变量称为形式参数
接下来让我们具体了解局部变量、全局变量和形式参数。
局部变量
在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。
以下实例中 main() 函数使用了局部变量 a, b, c:
package main
import "fmt"
func main() {
/* 声明局部变量 */
var a, b, c int
/* 初始化参数 */
a = 10
b = 20
c = a + b
fmt.Printf ("结果: a = %d, b = %d and c = %d\n", a, b, c)
}
以上实例执行输出结果为:
结果: a = 10, b = 20 and c = 30
全局变量
在函数体外声明的变量称之为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。
全局变量可以在任何函数中使用,以下实例演示了如何使用全局变量:
package main
import "fmt"
/* 声明全局变量 */
var g int
var x = 1
var y int = 3
//不能写 y:=3 会报错
func main() {
/* 声明局部变量 */
var a, b int
/* 初始化参数 */
a = 10
b = 20
g = a + b
fmt.Printf("结果: a = %d, b = %d and g = %d,x = %d,y = %d\n", a, b, g, x, y)
}
以上实例执行输出结果为:
结果: a = 10, b = 20 and g = 30,x = 1,y = 3
Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。实例如下:
package main
import "fmt"
/* 声明全局变量 */
var g int = 20
func main() {
/* 声明局部变量 */
var g int = 10
fmt.Printf ("结果: g = %d\n", g)
}
以上实例执行输出结果为:
结果: g = 10
形式参数
形式参数会作为函数的局部变量来使用。实例如下:
package main
import "fmt"
/* 声明全局变量 */
var a int = 20;
func main() {
/* main 函数中声明局部变量 */
var a int = 10
var b int = 20
var c int = 0
fmt.Printf("main()函数中 a = %d\n", a);
c = sum( a, b);
fmt.Printf("main()函数中 c = %d\n", c);
}
/* 函数定义-两数相加 */
func sum(a, b int) int {
fmt.Printf("sum() 函数中 a = %d\n", a);
fmt.Printf("sum() 函数中 b = %d\n", b);
return a + b;
}
以上实例执行输出结果为:
main()函数中 a = 10
sum() 函数中 a = 10
sum() 函数中 b = 20
main()函数中 c = 30
初始化局部和全局变量
不同类型的局部和全局变量默认值为:
| 数据类型 | 初始化默认值 |
|---|---|
| int | 0 |
| float32 | 0 |
| pointer | nil |