既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
type Person struct {
Name string
Age int
}
func (p Person) hello() {
fmt.Printf("hello ! my name is %v",p.Name)
}
func main() {
var p Person
p.Name="jerry"
p.Age=55
p.hello()
}
- func (p Person) hello() {} 表示 Person 结构体有一方法,方法名为 hello
- (p Person) 体现 hello方法是和 Person 类型绑定的
- hello方法和 Person 类型绑定
- hello方法只能通过 Person 类型的变量来调用,而不能直接调用,也不能使用其它类型变量来调
用 - func (p Person) hello() {}… p 表示哪个 Person 变量调用,这个 p 就是它的副本, 这点和函数传参非
常相似 - p 这个名字,有程序员指定,不是固定, 比如修改成 person 也是可以
三、方法快速入门
1) 简单方法
给 Person 结构体添加 speak 方法,输出 xxx 是一个好人
func (p Person) speak() {
fmt.Printf("%v 是一个好人!",p.Name)
}
2) 带有逻辑的方法
给 Person 结构体添加 calc 方法,可以计算从 1+…+1000 的结果, 说明方法体内可以函数一样,
进行各种运算
func (p Person) calc() {
sum := 0
for i:=0;i<1000;i++{
sum+=i
}
fmt.Printf("the result id %d",sum)
}
3) 带有参数的方法
给 Person 结构体 calc1 方法,该方法可以接收一个数 n,计算从 1+…+n 的结果
func (p Person) calc1(n int) {
sum := 0
for i:=0;i<n;i++{
sum+=i
}
fmt.Printf("the result id %d",sum)
}
4) 带有返回值的方法
给 Person 结构体添加 getSum 方法,可以计算两个数的和,并返回结果
func (p Person) getSum(a int, b int) int {
return a + b
}
也可以写成
func (p Person) getSum(a int, b int) (c int) {
c = a + b
return
}
注意 不能返回局部变量
的地址值
;因为函数调用结束,栈帧释放,局部变量的地址,不再受系统保护,随时可能分配给其他程序。可以返回局部变量
的值
5) 方法的调用
func main() {
var p1 Person
p1.Name = "jerry"
p1.Age = 55
p1.hello()
p1.speak()
p1.calc1(1000)
p1.calc()
p1.getSum(1,1)
}
四、方法的声明(定义)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新