网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
//使用别名调用方法
var newi newint
result :=newi.add(2)
fmt.Println("为int定义别名",result)
}
[]( )多态(接口作为参数实现多态)
----------------------------------------------------------------------------
### []( )接口
接口 ,给结构体定义接口,那么必须定义接口里面的所有方法才可以
//定义接口
type IHuman interface {
say()
eat()
}
type Stus struct {
name string
age int
}
type Teas struct {
name string
age int
sex string
}
//结构体实现接口方法1
func (stus *Stus) eat() {
fmt.Println(stus.name, "正在吃饭")
}
//结构体实现接口方法2
func (stus *Stus) say() {
fmt.Println(stus.name, "正在说话")
}
func (tea *Teas) eat() {
fmt.Println(tea.name, "正在吃饭")
}
func (tea *Teas) say() {
fmt.Println(tea.name, "正在说话")
}
//将接口作为函数参数实现多态
func dotest(hu IHuman) {
hu.say()
hu.eat()
}
//测试
func main() {
//多态调用
stus := Stus{"诸葛", 1}
dotest(&stus)
tea := Teas{"老师", 1,"男"}
dotest(&tea)
var h IHuman
h = &stus
h.say()
h.eat()
}
### []( )接口继承和转换
//接口继承和转换
type Humans interface {//子集
eat()
}
type Persons interface {//超集
Humans //匿名继承接口
say()
}
type Students struct {
name string
age int
}
func (stus *Students)say() {
fmt.Println(stus.name,"在说话")
}
func (stus *Students)eat() {
fmt.Println(stus.name,"在吃东西")
}
func main() {
var h Humans
stu :=Students{"飞飞",1}
h = &stu
h.eat()
var p Persons
p = &stu
p.eat()
p.say()
//超集中包含所有子集的方法
//超集合赋值给子集,子集不能赋值给超集
h = p
//p = h //这样是不可以的
h.eat()
}
### []( )空接口和类型断言
//空接口
var i interface{}
//空接口类型的切片
var ni []interface{}
func test() {
fmt.Println("函数调用")
}
func main() {
//空接口可以接受任意类型数据
i = 10
fmt.Printf("%T\n", i)
fmt.Println(i)
i = "你好"
fmt.Println(i)
fmt.Printf("%T\n", i)
//接口切片可以放任意类型
app := append(ni, 88, "飞飞", 3.23, test)
//里面的值不能直接使用,要通过类型断言才可以
for a := 0; a < len(app); a++ {
fmt.Println(app[a])
}
for _, v := range app {
if value, ok := v.(int); ok {
fmt.Println("int数据", value)
} else if test, ok := v.(func()); ok {
test()
} else if value, ok := v.(string); ok {
fmt.Println("sting数据", value)
}
}
//类型断言
//值,值的判断bool = 接口变量(数据类型)
value, ok := i.(string)
if ok {
fmt.Println("结果正确", value)
} else {
fmt.Println("错误")
}
}
[]( )异常
----------------------------------------------------------------
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
[外链图片转存中...(img-bDa7cJoD-1715815275737)]
[外链图片转存中...(img-9HrZ5Qgk-1715815275737)]
[外链图片转存中...(img-OBeTnxN2-1715815275738)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618658159)**