文章目录
一. 变量
声明用: var
规则
- 必须由
非空
的unicode字符串组成 不能以数字
开头- 不能为
go关键字
(25个) - 避免和go预定义标识符冲突
- 驼峰命名法
- 区分大小写
- 定义之后必须使用
一次性
定义多个变量(用“逗号
”隔开)可以
直接在定义时直接赋值
不能
重复声明
,可以
重复赋值
方式一:定义一个变量
变量名 类型
var name string
方式二:定义多个变量
变量名 类型
var name1,name2 string
方式三
:定义不同类型
的变量
变量名 类型
var (
age int = 20
height float64 = 1.78
sex string ="男"
)
简短类型声明
有个冒号
:
只能
在函数里面
isHello:=true
#一次赋值多个
bb,aa := true,false
#将他们的值互换
aa,bb =bb,aa
互换
包级别的变量
包级别的函数----在函数外
匿名变量
匿名变量,优点有三:
不分配内存,不占用内存空间
不需要你为命名无用的变量名而纠结
多次声明不会有任何问题
通常我们用匿名接收必须接收
,但是又不会用到的值。
func GetData() (int, int) {
return 100, 200
}
func main(){
a, _ := GetData()
_, b := GetData()
fmt.Println(a, b)
}
二. 常量const
不可变
,可以
定义在函数外
- 也必须被调用
- 命名—
全大写
- 多个相同的常量可以
省略,类型和赋值
const NAME string = "hello"
多个类型相同
const NAME,AGE string ="qcq","ly"
多个类型不同
const (
NAME string ="hello"
AGE int =20
HEIGHT float64 = 1.78
)
多个相同的常量可以省略,类型和赋值
三. 作用域
定义变量,标识符可以使用的范围
- 用
{ }
来定义 作用域的范围,可以嵌套
- 语句块内可以使用语句块外的
- 使用规则:
子语句可以使用父语句块
- 相同的名称,
会在子语句覆盖
,而其他不变
四. 常用类型
1. 布尔类型
- bool
- 只有两个值
true,false
- 零值 false
而在 Go 中,真值用 true 表示,不但不与 1 相等,并且更加严格,不同类型无法进行比较,而假值用 false
表示,同样与 0 无法比较
。
如下图所示,Goland 直接波浪线提示类型不匹配,不能比较。
Go 中确实不如 Python 那样灵活,bool 与 int 不能直接转换,如果要转换,需要你自己实现函数。
bool 转 int
func bool2int(b bool) int {
if b {
return 1
}
return 0
}
int 转 bool
func int2bool(i int) bool {
return i != 0
}
在 Python 中使用 not 对逻辑值取反,而 Go 中使用 !
符号
import "fmt"
var male bool = true
func main() {
fmt.Println( !male