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)?