目录
前言
go语言是静态语言,是强类型语言。赋值前要声明变量的类型,且赋值要和类型一致。
静态语言:go、java、c++、c#
动态语言:弱类型语言。定义的时候不知道是什么类型,赋值为什么类型就是什么类型。
动态语言:javascript、php、python、ruby
变量定义
go语言的局部变量定义了就要使用,不然会语法报错。而全局变量定义了没有使用不会报错。
1.标准格式
定义变量,然后进行赋值
var name type
name = value
或
var name type = value
2.类型推断
判断变量类型,缺省数据类型
var name = value
3.简短声明
简短定义,也叫简短声明
name := value
name, num := "value", 0
注意:
1.简短声明只能定义在函数体内,不可以定义为全局变量。
2.已经声明过的变量不能使用:=进行赋值。
4.多变量声明
//同一类型多变量声明
var a, b int
a = 1
b = 2
//定义集合。(不同类型多变量声明)
var (
name = "xiaoming"
age = 18
sex = 0
)
常量定义
常量定义后不使用是不会报错的。
常量的变量名需要全部大写。
哪些值适合定义为常量?如:圆周率、百度网址
常量是一个简单值的标识符,在运行时不会被修改。
const identifier [type] = value
显示类型定义:const A string = "abc"
隐式类型定义:const A = "abc"
多常量声明
多常量声明时,如果某个常量未赋值,则默认与上一个常量的值一致。
const (
PI = 3.14
PI2
A1 = 111
)
特殊常量iota
itoa可视为枚举类型。
itoa从0开始,每次赋值会自增1,直到下一个const清零。
const (
A = iota
B = iota
C = iota
D = iota
)
可简写为
const (
A = iota
B
C
D
)
同
const (
A = 0
B = 1
C = 2
D = 3
)
如果const定义特殊常量中有其他常量赋值,跳过时iota也会自增1
const (
A = iota //0
B = iota //1
C = "CCC" //CCC
D = iota //3
)
匿名变量
go语言中为了杜绝变量的滥用,未被使用的变量会报错。实际编码过程中,当函数返回值有多个,接受后可能不会每个变量都会用到。
此时可以用匿名变量"_"来接收返回值。相当于直接忽略此返回值。
resp, _ := response("xxx")
作用域
作用域表示可访问变量的范围。go语言有两种作用域:
1.局部作用域
定义在局部作用域的变量叫局部变量,局部变量出了局部作用域则会被销毁。
函数内部可以用{ }来定义一个更小的局部作用域。
2.全局作用域
函数外部定义的变量叫全局变量。全局变量的声明周期与程序进程相同,程序结束才会被销毁。
var Name string = "daming" //其他文件可以访问
var name = "xiaoming" //其他文件不可以访问
func main() {
...
}