Go 语言变量
变量相当于在内存中一个数据存储空间的表示,通过变量名可以访问到变量(值)。
简单举个栗子:
package main
import "fmt"
func main(){
// 定义变量 也叫声明变量
var i int
// 给变量赋值
i = 10
// 使用变量
fmt.Println("i=", i)
}
// 输出结果:i= 10
一、Go 变量 使用的三种方式:
第一种方式:指定变量类型,声明后若不赋值,使用默认值
package main
import "fmt"
func main(){
// 第一种:指定变量类型,声明后若不赋值,使用默认值
var i int
fmt.Println("i=", i)
}
// 输出结果:i= 0
int 默认值:0
string 默认值:空字符串
小数 默认值:0
第二种方式:根据值自行判断,变量类型(类型推导)
package main
import "fmt"
func main(){
// 第二种:根据值自行判定变量类型(类型推导)
var i = 10.66 // 10.66赋值给i变量, i的类型就是小数型;
// 如果是 i = 10 i 类型就是int;
// 如果是i = "10" i 类型就是字符串
fmt.Println("i=", i)
}
// 输出结果:i= 10.66
第三种方式:省略var
package main
import "fmt"
func main(){
// 第三种 省略var
name := "fe_cow"
fmt.Println("name=", name)
}
// 输出结果:name= fe_cow
注意事项:
- := 左侧的变量不应该是已经声明的,否则会导致编译错误;
- name := “fe_cow” 等同于 var name string name = “fe_cow”;
- := 不能忽略,否则会报错;
二、Go 多变量的声明:
在编程中,我们往往需要一次声明多个变量
第一种方式:
package main
import "fmt"
func main(){
var n1, n2, n3 int
fmt.Println("n1=", n1, "n2=", n2, "n3=", n3)
}
// 输出结果:n1= 0 n2= 0 n3= 0
第二种方式:
package main
import "fmt"
func main(){
var mobile, name, age = 130000000, "fe_cow", 28
fmt.Println("mobile=", mobile, "name=", name, "age=", age)
}
// 输出结果:mobile= 130000000 name= fe_cow age= 28
第三种方式:
package main
import "fmt"
func main(){
mobile, name, age := 130000000, "fe_cow", 28
fmt.Println("mobile=", mobile, "name=", name, "age=", age)
}
// 输出结果:mobile= 130000000 name= fe_cow age= 28
三、Go 全局变量:
在 Go 中函数外部定义变量,就是全局变量;
第一种方式:
package main
import "fmt"
var name = "fe_cow"
var age = 19
var mobile = 1300000000
func main(){
fmt.Println("mobile=", mobile, "name=", name, "age=", age)
}
// 输出结果:mobile= 130000000 name= fe_cow age= 28
第二种方式(推荐使用):
package main
import "fmt"
var (
name = "fe_cow"
mobile = "1300000000"
age = 18
)
func main(){
fmt.Println("mobile=", mobile, "name=", name, "age=", age)
}
// 输出结果:mobile= 1300000000 name= fe_cow age= 18
四、使用 变量 注意事项:
-
该区域的数据值,可以在同一类型范围内不断变化:
package main import "fmt" func main(){ var i int = 10 i = 20 i = 50 fmt.Println("i=", i) // 以上操作都可成功 // i = 6.66 // 会报错, 原因是会改变数值类型 }
-
变量在同一作用域(在一个函数或者在代码块)内不能重名:
package main import "fmt" func main(){ var i int = 10 fmt.Println("i=", i) // 以上操作都可成功 // var i int = 66 会报错, 不能重名 // i := 66 会报错, 不能重名 }