目录
1.关于变量的声明
2.关于常数的声明
3.关于类型的声明
4.关于函数的声明
关于Go的声明主要有四种
1.变量(var)
2.常量(const)
3.类型(type)
4.函数(func)
1.关于变量的声明
声明变量1: var 变量名(驼峰命名法) 数据类型 = 数据值
var name string = "pw"
声明变量2: var(一组变量)
var (
age int
phone string
)
声明变量3:(短声明变量) 变量名 := 初始值
关于短声明变量:1.短声明变量会根据初始值自动推导数据类型
2.短声明变量常用于函数内部的局部变量
3.全局变量只能通过var声明,不能使用短声明
sex := "男"
关于变量的默认值:
/*
变量的默认值:
int : 0
float double : 0.0
string : 空字符串
bool : false
指针、切片、函数等默认为 : null
*/
2.关于常数的声明
1.const的使用
与其他语言一样 const代表常量 不能修改
注意:Go语言中浮点型有float32和float64 不存在double和float
const pi float32 = 3.1415926
const (
p1 = 1
p2 = 2
p3 = 3
)
2.关于const的无类型常量
正常情况下常量可以是任何基本数据类型(如int或float64),
也包括具名的基本类型(如time.Duration)
但是许多常量并不属于某一个具体的类型,此时这些常量属于:从属类型待定的常量
从属类型待定的常量有6种:
无类型布尔、无类型整数、无类型文字符合、无类型浮点数、无类型复数、无类型字符串
且:这些常量比基础类型的数字精度更高,且算术精度高于原生的机器密度。可以认为它们的精度至少达到256位
关于无类型常量的作用:
1.暂时维持更高的精度
2.用于更多的表达式而不需要转换类型
例如:
const zib = 1180591620717411303424
const yib = 1208925819614629174706176
fmt.Println(zib)
很明显变量zib和yib的精度超过了基本数据类型,所以在输出时会报错
但是zib和yib的数据依旧会完整的存储 并能进行运算
const zib = 1180591620717411303424
const yib = 1208925819614629174706176
fmt.Println(yib / zib)
所以 无类型常量能暂时维持高精度
我
浮点型常量math.Pi进行赋值时 无需进行类型转换
但如果math.Pi不属于无类型常量,而属于float64的话,则当赋值的类型不一致时可能导致精度下降或者需要进行类型转换
//浮点型常量 math.Pi
var x float32 = math.Pi
var y float64 = math.Pi
var z complex128 = math.Pi
fmt.Println(x, y, z)
3.关于类型的声明
type主要用于声明新的数据类型
例如当姓名name和密码password都使用string时 在大型开发中可能会混乱
此时可以使用type将二者区分成不同名字的类型 但他们的底层都是string的底层
type Name string
type Password string
var name Name = "pw"
var password Password = "123456"
4.关于函数的声明
func 函数名 (参数列表parameter-list) 返回值列表result-list{
}
注意点:
1.在接收返回值时,如果返回值列表中有一个或者多个不需要时,可以使用_接收
func text_func(a, b int) (x, y int) {
return a, b
}
func main() {
a, _ := text_func(1, 2)
fmt.Println(a)
}
2.函数主体的大括号{函数主体} 其中左半边括号必须和函数名同行
这是因为go语言编译器会主动把特定符号后的换行符转换为分号
//正确函数样式
func text_func(a, b int) (x, y int) {
return a, b
}
//错误函数样式 这种情况会报错
func text_funcx(a, b int) (x, y int)
{
return a, b
}