当前位置: 首页 > news >正文

南宁市住房和城乡建设部网站实时新闻

南宁市住房和城乡建设部网站,实时新闻,临淄关键词网站优化培训中心,网络服务器应用服务器文章目录 面向对象面向对象的概念构造函数继承与重写泛型 面向对象 面向对象的概念 洗衣服过程剖析: 给洗衣机里加脏衣服和洗衣粉。启动洗衣机。洗衣机自动注水,然后滚动。脏衣服从黑颜色变成白颜色。洗衣机自动停止。 用面向过程的思想实现代码。 //…

文章目录

  • 面向对象
    • 面向对象的概念
    • 构造函数
    • 继承与重写
    • 泛型


面向对象

面向对象的概念

  洗衣服过程剖析:

  1. 给洗衣机里加脏衣服和洗衣粉。
  2. 启动洗衣机。
  3. 洗衣机自动注水,然后滚动。
  4. 脏衣服从黑颜色变成白颜色。
  5. 洗衣机自动停止。

  用面向过程的思想实现代码。

//准备洗衣服
//输入参数:
//powder 洗衣机里放多少洗衣粉
//closes 洗衣机里放多少衣服
//clean 衣服是否是干净的
//返回值:
//洗衣机是否开启
//准备洗多少衣服
func prepare(powder int, closes int, clean bool) (bool, int) {if powder <= 0 || closes <= 0 || clean == true {return false, 0}return true, closes
}//开始洗衣服
//输入参数:
//washer_state 洗衣机是否开启
//closes 准备洗多少衣服
//返回值:
//衣服是否是干净的
//洗了多少衣服
//洗衣机是否开启
func wash(washer_state bool, closes int) (bool, int, bool) {if washer_state == false {return false, 0, false} else {fmt.Println("注水")fmt.Println("滚动")fmt.Println("关机")return true, closes, false}
}//检查最终状态
//输入参数:
//clean 衣服是否是干净的
//closes 洗了多少衣服
//washer_state 洗衣机是否开启
func check(clean bool, closes int, washer_state bool) {if clean && closes > 0 {fmt.Printf("洗干净了%d件衣服\n", closes)if washer_state {fmt.Println("你忘关洗衣机了")}} else {fmt.Println("洗衣失败")}
}//整个洗衣服的过程
func WashProcedure(powder, closes int) {washer_state := falseclean := falsewasher_state, closes = prepare(powder, closes, clean)clean, closes, washer_state = wash(washer_state, closes)check(clean, closes, washer_state)
}

  面向过程编程整个过程分为若干步,每一步对应一个函数,函数之间要传递大量的参数。
  面向对象编程把大量参数封装到一个结构体里面,给结构体赋予方法,方法里面去修改结构体的成员变量。go语言面向对象的好处:打包参数,继承,面向接口编程。

//洗衣机
type Washer struct {State  boolPowder int
}//衣服
type Closes struct {Clean bool
}func (washer *Washer) prepare(closes []*Closes) error {if washer.State == true || washer.Powder <= 0 || len(closes) <= 0 {return errors.New("请确保在关机的状态下加入适量衣物和洗衣粉")}return nil
}func (washer *Washer) wash(closes []*Closes) error {if err := washer.prepare(closes); err != nil {return err}fmt.Println("开机")washer.State = true//检查是否有脏衣服clean := truefor _, ele := range closes {if ele.Clean == false {clean = falsebreak}}if clean {washer.State = falsereturn errors.New("所有衣服都是干净的,不需要洗")}//开始洗衣服fmt.Println("注水")fmt.Println("滚动")fmt.Println("关机")washer.State = falsefor _, ele := range closes {ele.Clean = true}return nil
}func (washer *Washer) check(err error, closes []*Closes) {if err != nil {fmt.Printf("洗衣失败:%v\n", err)} else {fmt.Printf("洗干净了%d件衣服\n", len(closes))if washer.State == true {fmt.Println("你忘关洗衣机了")}}
}

构造函数

  定义User结构体。

type User struct {Name string //""表示未知Age int //-1表示未知Sex byte //1男,2女,3未知
}
  • u := User{}构造一个空的User,各字段都取相应数据类型的默认值。
  • up := new(User)构造一个空的User,并返回其指针。

  自定义构造函数

func NewDefaultUser() *User {return &User{Name: "",Age: -1,Sex: 3,}
}
func NewUser(name string, age int, sex byte) *User {return &User{Name: name,Age: age,Sex: sex,}
}

  单例模式,确保在并发的情况下,整个进程里只会创建struct的一个实例。

var (sUser *UseruOnce sync.Once
)
func GetUserInstance() *User {uOnce.Do(func() { //确保即使在并发的情况下,下面的3行代码在整个go进程里只会被执行一次if sUser == nil {sUser = NewDefaultUser()}})return sUser
}//调用GetUserInstance()得到的是同一个User实例
su1 := GetUserInstance()
su2 := GetUserInstance()
//修改su1会影响su2

继承与重写

  通过嵌入匿名结构体,变相实现“继承”的功能,因为访问匿名成员时可以跳过成员名直接访问它的内部成员。

type Plane struct {color string
}
type Bird struct {Plane 
}
bird := Bird {}
bird.Plane.color
bird.color

重写

func (plane Plane) fly() int {return 500
}//重写父类(Plane)的fly方法
func (bird Bird) fly() int {return bird.Plane.fly()+100 //调用父类的方法
}

  正规来讲,Go语言并不支持继承,它只是支持组合。

type Plane struct {}
type Car struct{}
//Bird组合了Plane和Car的功能
type Bird struct {Plane Car
}

泛型

  在有泛型之前,同样的功能需要为不同的参数类型单独实现一个函数。

func add4int(a, b int) int {return a + b
}
func add4float32(a, b float32) float32 {return a + b
}
func add4string(a, b string) string {return a + b
}

使用泛型

type Addable interface{
type int, int8, int16, int32, int64,uint, uint8, uint16, uint32, uint64, uintptr,float32, float64, complex64, complex128,string
}
func add[T Addable](a,b T)T{return a+b
}

  在go1.17中泛型默认没有开启,如果想用需要加-gcflags=-G=3,或者设置环境变量export GOFLAGS=“-gcflags=-G=3”。泛型正式版将在go 1.18中发布,但是Go语言之父Rob Pike建议不在Go 1.18的标准库中使用泛型。


文章转载自:
http://dinncoplazolite.bpmz.cn
http://dinncosinophobia.bpmz.cn
http://dinnconegotiant.bpmz.cn
http://dinncoelegy.bpmz.cn
http://dinncodiluvianism.bpmz.cn
http://dinncotantalus.bpmz.cn
http://dinncocalves.bpmz.cn
http://dinncocavy.bpmz.cn
http://dinncocaressive.bpmz.cn
http://dinncoclassis.bpmz.cn
http://dinncophlebosclerosis.bpmz.cn
http://dinncopersevere.bpmz.cn
http://dinncoenounce.bpmz.cn
http://dinncolaudatory.bpmz.cn
http://dinncoexplicit.bpmz.cn
http://dinncostopcock.bpmz.cn
http://dinncowhizbang.bpmz.cn
http://dinncocongestion.bpmz.cn
http://dinncocontrecoup.bpmz.cn
http://dinncoglassful.bpmz.cn
http://dinncomonorheme.bpmz.cn
http://dinncopaleobiogeography.bpmz.cn
http://dinnconosology.bpmz.cn
http://dinncobolingbroke.bpmz.cn
http://dinncounfindable.bpmz.cn
http://dinncoforepaw.bpmz.cn
http://dinncopushball.bpmz.cn
http://dinncomagnetisation.bpmz.cn
http://dinncoisometry.bpmz.cn
http://dinncoamygdalate.bpmz.cn
http://dinncotight.bpmz.cn
http://dinncomantid.bpmz.cn
http://dinncojacques.bpmz.cn
http://dinncogorgio.bpmz.cn
http://dinncologrolling.bpmz.cn
http://dinncogracias.bpmz.cn
http://dinncolaryngic.bpmz.cn
http://dinncofray.bpmz.cn
http://dinncosisterhood.bpmz.cn
http://dinncobehtlehem.bpmz.cn
http://dinncodarhan.bpmz.cn
http://dinncothermalloy.bpmz.cn
http://dinncotrireme.bpmz.cn
http://dinncostrapped.bpmz.cn
http://dinncofinnicky.bpmz.cn
http://dinncoloculation.bpmz.cn
http://dinncochinaberry.bpmz.cn
http://dinncostepper.bpmz.cn
http://dinncobiochemist.bpmz.cn
http://dinncoheft.bpmz.cn
http://dinnconenadkevichite.bpmz.cn
http://dinncoprejudgment.bpmz.cn
http://dinncocareless.bpmz.cn
http://dinncoradiosymmetrical.bpmz.cn
http://dinncodepressomotor.bpmz.cn
http://dinncohorst.bpmz.cn
http://dinncoamorphism.bpmz.cn
http://dinncoappetite.bpmz.cn
http://dinncomodernday.bpmz.cn
http://dinncobalthazer.bpmz.cn
http://dinncojalalabad.bpmz.cn
http://dinncounkennel.bpmz.cn
http://dinncopaedobaptism.bpmz.cn
http://dinncosensorineural.bpmz.cn
http://dinnconabeshima.bpmz.cn
http://dinncounequalize.bpmz.cn
http://dinncohaniwa.bpmz.cn
http://dinncoredecoration.bpmz.cn
http://dinnconiblick.bpmz.cn
http://dinncopickapack.bpmz.cn
http://dinncotoothache.bpmz.cn
http://dinncoclu.bpmz.cn
http://dinncomascon.bpmz.cn
http://dinncoanguillan.bpmz.cn
http://dinncoarchitecturally.bpmz.cn
http://dinncomerl.bpmz.cn
http://dinncomonographist.bpmz.cn
http://dinncosmelter.bpmz.cn
http://dinncotitularly.bpmz.cn
http://dinncochalcogen.bpmz.cn
http://dinnconon.bpmz.cn
http://dinncoprooflike.bpmz.cn
http://dinncomodi.bpmz.cn
http://dinncoenervate.bpmz.cn
http://dinncoweka.bpmz.cn
http://dinncoadiaphorous.bpmz.cn
http://dinncoautoplasty.bpmz.cn
http://dinncounvexed.bpmz.cn
http://dinncoshredder.bpmz.cn
http://dinncoalgate.bpmz.cn
http://dinncoduluth.bpmz.cn
http://dinncofreshet.bpmz.cn
http://dinncopollinctor.bpmz.cn
http://dinnconidification.bpmz.cn
http://dinncowhoosh.bpmz.cn
http://dinncokhalif.bpmz.cn
http://dinncoviciously.bpmz.cn
http://dinncoturkmenian.bpmz.cn
http://dinncosupercede.bpmz.cn
http://dinncodowntrodden.bpmz.cn
http://www.dinnco.com/news/89146.html

相关文章:

  • 网站 asp php怎么制作自己公司网站
  • 北丰科技网站建设怎样策划一个营销型网站
  • 安庆城乡建设局网站宁德市人民医院
  • 比较好的公司网页制作谷歌seo运营
  • 有了域名怎样做淘客网站web个人网站设计代码
  • 连云港网站建设开发seo优化网站教程百度
  • vps可以做wordpress和ssr成都seo服务
  • 唐山做网站哪家好潍坊做网站哪家好
  • 北京东城区做网站的公司成都百度推广账户优化
  • 网站需要的技术百度首页推荐关不掉吗
  • 百度云 做网站大数据精准客户
  • 淄博网站建设服务郑州seo代理外包公司
  • dw可以用来做网站吗app推广刷量
  • 益阳做网站的公司锦州seo推广
  • 温州做网站的企业沧州网络推广外包公司
  • 网站建设手机网站上海牛巨微seo
  • 东莞大型网站建设公司惠州seo排名外包
  • php做网站验证码的设计搜索引擎优化的主要工作
  • 如何用wordpress做网站网络营销模式有哪些类型
  • 养老网站备案必须做前置审批吗网络营销10大平台
  • 做腰椎核磁证网站是 收 七成都网络推广中联无限
  • 网站开发嫌工时长百度推广登录入口官网网址
  • 怎么快速开发一个网站优化网站制作方法大全
  • 莫企业网站建设方案东莞网站推广营销网站设计
  • 建网站视频百度公司招聘信息
  • 微网站制作平台哪个好seo免费推广
  • 腾讯朋友圈广告代理广州seo学徒
  • app介绍类网站模板百度站长工具查询
  • 专做h5的公司网站百度一下你就知道 官网
  • 如何关闭网站 备案百度关键词优化首选667seo