12.微博案例代码--基础篇
微博案例解析:
1.博主发布微博
2.粉丝管理
3.粉丝发布评论
4.博主查看评论
设计分析:
按照面对独享的思考方式,应该这样设计
1.博主一个类,为博主添加 增加博文 查看评论
2.粉丝一个类,发布评论。
3.博主和粉丝之间的交互方法,比如博主发布微博后,粉丝接到通知,粉丝可以选择关注和取消关注,博主可以查看自己被多少粉丝关注,粉丝可以随意查看自己关注了多少博主。
在此之间我们得重新复习下接口和结构体,和多态定义与实现:
packageGo_07
import"fmt"
typePerson_07interface{
SayHello()
}
typeStudent_07struct{
}
typeTeacher_07struct{
}
func(sStudent_07)SayHello() {
fmt.Println("老师好")
}
func(tTeacher_07)SayHello() {
fmt.Println("学生好")
}
funcText_07() {
// 这是平常的写法
varstuStudent_07
stu.SayHello()
varteacherTeacher_07
teacher.SayHello()
// 使用接口
varpersonPerson_07
person=&stu
person.SayHello()
person=&teacher
person.SayHello()
// 有一个弊端就是,接口中的方法必须全部用到,如果这里出现一个其他用不到的方法就会报错。
}
这里接口Person_07就相当于继承了Student_07结构体和Teacher_07结构体这2类,同样也就能使用这2类结构体的方法SayHello().
这里发现很麻烦对不对?创建接口的作用就是为了更方便的调用结构体方法,那么就为这个接口添加一个方法,与为结构体添加方法同理,为接口添加方法,来调用结构体方法,两者的区别精髓在于,结构体内存的是变量,接口内可存的方法,结构体中存变量,接口中不能存变量可以存方法。(注意!接口中的方法必须全部实现,有不实现的意味着没有继承这个接口。)
结构体:
//结构体Student类
typeStudentstruct{
namestring
ageint
addressstring
}
//创建Student类对象切片 stu_01
varstu_01[]Student
//为结构体Student类添加方法
func(s*Student)Println_01() {
fmt.Println(stu_01)
}
funcmain() {
//为对象结构体类变量赋值
stu_01=[]Student{name:"JOJO",age:19,address:"空调市"}
//调用结构体的方法
stu_01.Println_01()
}
接口:
//结构体
typeStudentstruct{
}
//结构体方法 Println_01()
func(s*Student)Println_01(){
}
//结构体方法 Scan_01()
func(s*Student)Scan_01(){
}
//创建一个接口
typeStudent_01interface{
Println_01()
Scan_01()
}
//为接口添加使用方法
funcSchool(h*Student_01){
h.Println_01()
h.Println_01()
}
funcmain() {
//Student类对象
varstuStudent
//通过接口函数调用方法
School(&stu)
}
再就空接口的使用方法,这个使用的方法就当作数组之于切片,数组长度固定,切片不固定,空接口不限定变量类型,结构体内的变量是固定的。
复习完这个知识点,现在来写博主,粉丝两大类。
博主类:
typeBloggerstruct{
Base//Id 和 Name 用来识别博主
WeiBos []*PostContent//微博文章内容切片
Commentsmap[int][]*PostContent//某篇文章评论切片
// 评论内容,重点是区分属于哪个微博的
// value 表示具体的评论内容
}
//微博内容
//评论内容信息
typePostContentstruct{
Id int // 编号
Content string // 内容
CommentTimetime.Time// 时间
Type int // 类型
PostMan string // 发布人
To string // 给谁发布的
}
// 发布微博的方法的实现
// 第一个参数:表示微博的内容,第二个参数表示微博的类型
func(b*Blogger)PostWeiBo(contentstring,wbTypeint) {
// 1:创建PostContent对象
weibo:=new(PostContent)
// 2:成员初始化
weibo.Id=1
weibo.Content=content
weibo.Type=wbType
weibo.CommentTime=time.Now()//表示当前系统的时间
weibo.PostMan=b.Name
weibo.To="ALL"
// 3:存储微博数据
b.WeiBos=append(b.WeiBos,weibo)
for_,value:=rangeb.WeiBos{
fmt.Println(*value)
}
}
粉丝类:
typeFansstruct{
Base//Id 和 Name 用来识别粉丝
}
//关注了博主的粉丝
typeFriendlyFansstruct{
Fans
}
//没关注博主的粉丝
typeBadFansstruct{
Fans
}
肉眼可见的需要很多其他的功能,比如报错,这之后再说了,这也是属于教学步骤,先从最简单的做起,把博客教程写好,写明白再往上加。
领取专属 10元无门槛券
私享最新 技术干货