标签:ret tin array 不能 效果 局部变量 注意 运行时 处理
所有的程序都会有涉及到数据类型, go常用的基本数据类型
int, byte,float, array, string, struct, map, channel, interface, function,其余的rune,complex,uintptr用到的时候在查,一般很少用到。rune一般在处理汉字使用到,这就体现我泱泱大国的文字魅力
go是静态语言,不能在运行时改变变量类型,
go使用的时关键词 var 声明一个变量,自动化初始值是零值
var x int // 初始值 0 var s string // 初始值 “”
当然在函数内部,可以使用简略的 := 方式进行定义变量
func main(){ x := 1 // 这就是声明x的类型为int,并且初始值为1 }
当然也可以一次声明多个变量,使用 var ()
var( x int y float z interface{} s string }
在进行多变量赋值的时候,会优先计算所有相关值,然后从左至右依次赋值
data, i := [3]int{0, 1, 2}, 0 i, data[i] = 2, 100
例如上述动作中,[3]int{}这个就是生成一个长度为3的列表,花括号中放入初始化的值,如果花括号中的值不够,剩余的则用空值填充,3是一个声明列表长度的,如果不写,则默认生成与初始化值相等长度的列表,int是声明列表中的元素类型
data := [3]int{1,2,3} // [1,2,3] data := [3]int{1,2} // [1,2,0] data := []int{1,2,3} // [1,2,3] data := []int{1,2} // [1,2]
对于后面不用的值,可以使用 _ 来忽略, 为什么呢?因为编译器会将未使用的局部变量当作错误
func ignore()(int, int) { return 2, 2 } func main(){ x, _ = ignore() ... }
这样ignore的第二个返回值就会被忽略。
常量使用const来进行定义,常量值必须是编译期可确定的数字/字符串/布尔值, 也就是在定义初期就需要赋值,并且不调用也不会报错
const x = 1
常量中有一个比较优雅的实现递增功能,, 关键字 iota 定义常量组从0开始按行计数自增枚举值,对于有规略递增的常量就可以按这种方法进行使用啦
const ( x = iota // 0 y // 1 z // 2 )
还有两种值的初始化
b := make([]int, 3) // 这个意思是做一个长度为3,元素为int类型的列表 c := new([]int) // 这个意思是初始化元素为int的列表,这个返回值是地址也就是&[],这个不支持直接调用c[0]操作
对于一般类型,如果无法满足我们的需要,可以进行自定义类型,注意首字母大写,这个struct太有用了,后续会一直用的,因为go中没有类,函数就是一等公民,可以用这个实现跟python中类的效果
type Person struct { Name string Age int Sex string Deadth bool }
go中如果按照上述方法,定义了Person1与Person2中两个类型,struct体一毛一样,那在go中也是两个不同的类型
go 中的保留字不是很多,语言设计简练,不能白晚投胎
break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var
标签:ret tin array 不能 效果 局部变量 注意 运行时 处理
原文地址:https://www.cnblogs.com/yangshixiong/p/12120126.html