写点什么

【愚公系列】2022 年 10 月 Go 教学课程 031- 结构体方法

作者:愚公搬代码
  • 2022-10-17
    福建
  • 本文字数:1281 字

    阅读完需:约 1 分钟

一、结构体方法

1.结构体方法的定义

方法就是把某些逻辑代码封装到一起的集合,用固定格式包起来起个名字。


go 中的方法是一个函数,拥有附加的,单独元素的参数列表,称之为接收器。它被放在一个方法名之前。接收器的类型决定了如何使用方法。


以下是为一个类型定义一个方法的语法


func(对象 结构体类型) 方法名 (参数列表)(返回值列表) {  代码体}
复制代码

2.方法的基本使用

package main
import "fmt"
type Int int // type 为int类型指定了别名.func (a Int) TestInt(b Int) Int { return a + b}
func main() { var num Int = 10 var num1 Int = 20 n := num.TestInt(20) n1 := num1.TestInt(5) fmt.Println(n) fmt.Println(n1)
}
复制代码



package main
import "fmt"
type Student struct { id int name string age int}
// 接收者func (s Student) PrintShow() { fmt.Println(s)}func (s *Student) EditInfo() { s.age = 20}func main() { stu := Student{101, "张三", 18} stu.PrintShow() // 完成对方法的调用, 将stu中的值,传递给了方法的s. stu.EditInfo() stu.PrintShow()}
复制代码


3.方法使用的注意事项

package main
import "fmt"
type Student struct { id int name string age int}type Teacher struct { id int name string}
func (s *Student) Show() { fmt.Println(s)}func (t *Teacher) Show() { fmt.Println(t)}func main() { // 如果接收者类型不同,即使方法的名字是相同的也是不同的方法。 stu := Student{101, "李四", 18} //(&stu).Show() stu.Show() teacher := Teacher{102, "老王"} teacher.Show()}
复制代码


4.方法使用的案例

package main
import "fmt"
//定义一个学生类,有六个属性,分别为姓名、性别、年龄、语文、数学、英语成绩//第一方法:打招呼的方法:介绍自己叫XX,今年几岁了。是男同学还是女同学。//第二个方法:计算总分与平均分的方法
// 1: 定义结构体type StudentInfo struct { name string sex string age int chinese float64 math float64 english float64}
// 2: 添加方法func (s *StudentInfo) SayHello(userName string, userAge int, userSex string) { // 2.1 初始化 s.name = userName s.age = userAge s.sex = userSex // 2.2 初始化后的值进行判断。 if s.sex != "男" && s.sex != "女" { s.sex = "男" } if s.age < 1 || s.age > 100 { s.age = 18 } // 2.3 打印输出结果 fmt.Printf("我叫%s,年龄是%d,性别是%s\n", s.name, s.age, s.sex)}func (s *StudentInfo) GetScore(chinese float64, math float64, english float64) { // 1: 初始化 s.chinese = chinese s.math = math s.english = english // 2: 进行计算 sum := s.chinese + s.math + s.english // 3: 打印输出结果 fmt.Printf("我叫%s,总分%f,平均分%f", s.name, sum, sum/3)
}func main() { var stu StudentInfo stu.SayHello("张三", 180, "df") stu.GetScore(90, 89, 87)}
复制代码



发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2022-03-01 加入

该博客包括:.NET、Java、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、python、大数据等相关使用及进阶知识。查看博客过程中,如有任何问题,皆可随时沟通。

评论

发布
暂无评论
【愚公系列】2022年10月 Go教学课程 031-结构体方法_10月月更_愚公搬代码_InfoQ写作社区