变量
命名规则:
可以包含字幕,数字,下划线。必须是字幕或者下划线开头(下划线不建议)。不能是关键字。首字母大写为公有变量,可以被外包应用,小写为私有变量,只可以在包内使用。
变量的声明,赋值:
1、var 变量名 类型名 = 变量值
2、自动推导类型 变量名 := 变量值
匿名变量:
Go语言函数支持多个返回值,当某个返回值不需要时,可以用匿名变量下划线_接收。
基础数据类型:
整型,浮点,布尔,字符,字符串
字面常量:
基本类型的值可以直接参与运算,这些值就是字面常量。
常量的定义:
使用const定义
iota枚举:
iota的值等于当前常量在该声明中的位置,iota后续如未赋值则自动加1,如果赋值了字面常量则后续常量也等于该字面常量,直到遇到下一个iota,此时这个iota也等于当前位置,并不会重新计算,iota值从0开始计算。
类型转换:
Go语言中不允许隐式转换(自动转换),并且转换只能发生在两种互相兼容的类型之间。
类型别名,自定义类型:
通过type可以定义别名和自定义类型。
不加等号是自定义类型,虽然他们有相同的底层结构,但是凉着其实不存在任何关系,属于完全不同的两种或类型。
加等好是给类型取别名,是完全相同的类型。
type i int
type f = float
func mian (){
var a i =10
var b int = 20
// a = b // 这样是错的,他们是两种不同的类型不能运算,赋值等操作
var x f = 3.14
var y float = 10.24
z := x + y // 这个是对的,他们就是完全相同的类型
}
fmt包格式化输出:
官方文档有详细说明,常用的有下面几个
%v(原样输出)%T(输出类型)%t(布尔型)%b(二进制)%s(字符串)%f(浮点型)%d(整型)%c(字符型)