声明变量的四种方式
方法1:只声明一个变量名及其数据类型但不赋值
形式:
var [变量名] [数据类型]
package main import "fmt" func main() { // 方法1: 声明一个变量默认的值为0 var a int fmt.Println("a = ", a) } // 运行结果:a = 0
- 第七行当使用var声明之后没有赋值时,会给变量设置默认值0
方法2:声明一个变量及其数据类型并初始化值
形式:
var [变量名] [数据类型] = [初始化值]
// 方法2: 声明一个变量,并且初始化一个值 var b int = 100 fmt.Println("b =", b) // 运行结果:b = 100
方法3:声明一个变量省去数据类型通过赋值自动匹配数据类型
形式:
var [变量名] = [初始化值]
// 方法3: 在初始化的时候,可以省去数据类型,通过值自动匹配当前的数据类型(不太推荐) var c = 300 fmt.Println("c = ", c) // 运行结果: c = 300
方法4(最常用):省去var关键字,直接自动匹配
形式:
[变量名] := [初始化值]
// 方法4: 省去var关键字使用象牙运算符,直接自动匹配 d := 102 fmt.Println("d = ", d) e := 3.1415 fmt.Println("e = ", e) // 运行结果: d = 102 e = 3.1415
判断数据类型
GO语言中通过格式化输出printf来打印一个变量的数据类型:
package main
import "fmt"
/*
4种变量的声明方法
*/
func main() {
// 方法1: 声明一个变量默认的值为0
var a int
fmt.Println("a = ", a)
fmt.Printf("a的数据类型为: %T\n", a)
// 方法2: 声明一个变量,并且初始化一个值
var b int = 100
fmt.Println("b =", b)
fmt.Printf("b的数据类型为: %T\n", b)
// 方法3: 在初始化的时候,可以省去数据类型,通过值自动匹配当前的数据类型(不太推荐)
var c = 300
fmt.Println("c = ", c)
fmt.Printf("c的数据类型为: %T\n", c)
// 方法4: 省去var关键字使用象牙运算符,直接自动匹配
d := 102
fmt.Println("d = ", d)
fmt.Printf("d的数据类型为:%T\n", d)
e := 3.1415
fmt.Println("e = ", e)
fmt.Printf("e的数据类型为:%T\n", e)
}
- 使用printf格式化输出,格式化输出时使用占位符,
%T
的作用就是打印变量的数据类型。(如上放代码13、18、23、28、32行)
补充:print、println、printf区别对比
println:
打印的每一项之间都会有空行Print:
打印时没有空行printf:
标准格式化输出,有占位符
4种声明变量方法的区别
- 声明全局变量,方法一、方法二、方法三是可以的
- 方法四只能在结构体内声明变量
前三种声明全局变量:
package main
import "fmt"
// 方法1、方法2、方法3声明全局变量
var gA int =100
var gB = 2
var gC int
func main() {
fmt.Println("gA = ", gA, "gB = ", gB)
}
运行结果:
但是方法四使用象牙运算符赋值的方法不能用来声明全局变量:
package main
import "fmt"
gD := 1
func main() {
fmt.Println("gD = ", gD)
}
运行结果:
报错,所以使用:=
只能在结构体内使用,无法声明全局变量
同时声明多个变量
可以同时声明多个相同数据类型的变量,也可以同时声明不同数据类型的变量:
package main
import "fmt"
func main() {
// 声明多个变量
var xx, yy int = 100, 200 // 同时声明相同数据类型变量
fmt.Println("xx = ",xx , "yy = ", yy)
var ff, gg = 192, "hello" // 同时声明不同数据类型的变量
fmt.Println("ff = ",ff , "gg = ", gg)
}
运行结果:
写法上也可以将一行的多变量赋值拆成很多行来写:
package main
import "fmt"
func main() {
// 多行的多变量声明
var (
vv int = 100
ww bool = true
)
fmt.Println("vv = ", vv, "ww = ", ww)
}
运行结果:
此处评论已关闭