golang 显示界面和功能编程与OOP一起玩 - 使用Golang
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 显示界面和功能编程与OOP一起玩 - 使用Golang相关的知识,希望对你有一定的参考价值。
package reqresp
type ReqResp interface {
HashableString() string
IgnoreList() map[string]string
}
type Response struct {
Type Type
Details DataTypes
}
func (r *Response) IgnoreList() map[string]string{
return map[string]string{{"key1": "val1"}, "key2": "val2"}
}
func (r *Response) HashableString() {
dict := Actions.Dict(r)
return fmt.Sprintf("%s|%s", dict["amount"], dict["salt"])
}
type Request struct {
Type Type
Details DataTypes
}
func (r *Request) HashableString() {
dict := Actions.Dict(r)
return fmt.Sprintf("%s|%s", dict["key"], dict["salt"])
}
func (r *Request) IgnoreList() map[string]string{
return map[string]string{{"keyo": "valo"}, "keyu": "valu"}
}
// (FP)
type Actions struct {
}
func (a Actions) JSON(req ReqResp []byte{
safe_dict = remove(req.IgnoreList(), dict)
return JSON.marshal(safe_dict)
}
func (a Actions) Dict(req ReqResp) map[string]string {
var dict map[string]string
for i, detail := req.Details {
dict = merge(dict, detail.Dict())
}
return dict
}
// ||| level:(OOP) interface and struct
type DataTypes interface {
Validate()
Dict() map[string]string
}
type UserDetails struct {
Name string
}
func (ud *UserDetails) Validate() {
}
func (ud *UserDetails) Dict() map[string]string {
}
(三十)golang--面向对象
首先我们要明确:
- golang并不是纯粹的面向对象的编程语言;
- golang没有类class,使用struct代替;
- golang面向对象编程非常简洁,去掉了传统的继承、重载、构造函数和析构函数、隐藏的this指针等;
- golang仍然有面向对象编程的继承、封装和多态的特性,只是实现的方法和其他oop语言不一样;
- golang耦合性低,非常灵活;面向接口编程是非常重要的特性;
从这可以看出,结构体其实是我们自己定义的数据类型;结构体变量是具体的,实际的,代表一个具体变量;
结构体在内存中的布局:
以上是关于golang 显示界面和功能编程与OOP一起玩 - 使用Golang的主要内容,如果未能解决你的问题,请参考以下文章
Golang OOP继承组合接口
面向对象之结构体1
Golang OOP继承组合接口
面向对象编程(OOP)和面向过程编程
Golang如何体现面向对象三大特征之封装?
什么是面向对象编程(OOP)?