最简单的一句话就是:Type用于创建自定义类型,可以是结构体、接口、函数类型或方法集合
只要是类型就可以放到结构体里面当属性 , 这个在结构体的组合里面很有用
1.创建自定义结构体
用于构建一个结构,我们看待type的时候需要把它单独看待,他是修饰 name struct的.被type
type animal struct{
name string
age int
}
当然我们也可以用var来声明结构体,声明就相当于去内存里面要了一块区域来存放这个数据,这是一个匿名的结构体
var animal struct{
name string
age int
}
一个构建和定义就看出了 type的关键之处
2.创建自定义函数
type f fun()
3.创建自定义接口
type i interface{
}
4.组合成新的结构体
由于只要是type"创建"出来的都可以放到结构体里面,
type self_def struct{
//匿名声明
i
f
}
5.重定义为新的结构体
- 可以定义基本数据类型
// 这里我们用type 来修饰了
// 那么name就可以当成string类型来使用了
type name string
var name := "Hello World!"
这个时候你有个想法,想扩展下String类型,比如自己写个formate,自己定义个string类型能调用的函数,这个时候 通过type就能实现了,是不是有点类似于Java中的extends(A extends String 这只是举个例子,Java中String是不能再有子类了)
func(n name) len() int {
return len(n)
}
- 可以定义包装数据类型,双重定义
type copyName name
扩展
在总结的过程中,我发现如果我要声明并初始化一个一次性的结构体,应该怎么去做
正常我需要这样
type struct person{
name string
age int
}
var _test = &person{
name = "rambo"
age = 18
}
在某些情况下我就用一次,这么声明感觉有点多余,所以倒腾(虽然存在这种写法,但是我不知道)出了个匿名的
var _test2 = struct {
name string
age int
}{
name : "rambo"
age : 18
}
类比学习在有些使用会看到**fun{}()**所以可以一并记住匿名函数和匿名结构体
2024 2 22 第一次创作 肯定有不完善的地方后续改