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

档案网站建设网页建站平台如何隐藏技术支持

档案网站建设网页,建站平台如何隐藏技术支持,公司想建个网站怎么弄,美食网站怎样做锅包肉go中的值方法和指针方法1前言2 不同类型的对象调用不同类型的方法2.1 值对象可以调用值方法和指针方法3 指针对象可以调用值方法和指针方法4 !注意:结构体对象实现接口方法1前言 golang中在给结构体对象添加方法时,接收者参数类型可以有两种…

go中的值方法和指针方法

  • 1前言
  • 2 不同类型的对象调用不同类型的方法
    • 2.1 值对象可以调用值方法和指针方法
  • 3 指针对象可以调用值方法和指针方法
  • 4 !注意:结构体对象实现接口方法

1前言

golang中在给结构体对象添加方法时,接收者参数类型可以有两种,一种是值类型,另一种是指针类型

func(t Type) Method(){}
func(t *Type) Method(){}

2 不同类型的对象调用不同类型的方法

2.1 值对象可以调用值方法和指针方法

type Person struct{Name string Age int 
}
// 值方法
func(p Person) Zhi(){fmt.Printf("值方法打印名字: %s\n", p.Name)
}
// 指针方法修改年龄
func(p *Person) ZhiZhen(age int){p.Age = age
}func main(){// 创建值对象Tomvar Tom = Person{"tom", 10}Tom.Zhi() // 调用值方法Tom.ZhiZhen(20) // 调用指针方法fmt.Println(Tom.Age)  // 20
}

值对象肯定可以调用值方法,而对于指针方法的调用,其实是golang的语法糖,调用Tom.ZhiZhen()时,会自动转换成(&Tom).ZhiZhen()

3 指针对象可以调用值方法和指针方法

type Person struct{Name string Age int 
}
// 值方法
func(p Person) Zhi(){fmt.Printf("值方法打印名字: %s\n", p.Name)
}
// 指针方法修改年龄
func(p *Person) ZhiZhen(age int){p.Age = age
}func main(){// 创建指针对象Tomvar Tom = &Person{"tom", 10}Tom.Zhi() // 调用值方法Tom.ZhiZhen(20) // 调用指针方法fmt.Println(Tom.Age)  // 20
}

指针对象调用值方法也是golang中的语法糖,在调用值方法Tom.Zhi()时,也会自动转换成(*Tom).Zhi()

4 !注意:结构体对象实现接口方法

如果我们调用一个接口里面的函数,结构体对象实现接口时的方法可能是指针方法也可以是值方法,注意:

  • 值类型只能调用值方法

  • 指针类型可以调用值方法和指针方法

    package main import ("fmt"
    )
    // 接口类型
    type People interface{Say()SetAge(age int)GetAge()int 
    }
    // 结构体对象
    type Person struct{Name string Age int 
    }
    // 值方法
    func(p Person) Say(){fmt.Printf("值方法打印名字 %s\n", p.Name)
    }
    // 指针方法
    func(p *Person) SetAge(age int){p.Age = age
    }
    // 值方法
    func(p Person)GetAge()int{return p.Age
    }func main(){// People是个接口,被Person指针对象赋值,以下方法都可以正确执行var eve People  // 声明一个接口类型的对象eve = &Person{"eve", 10} // Person实现了接口eve.Say() eve.SetAge(20)fmt.Println(eve.GetAge())// 值类型并没有实现SetAge的方法,所以赋值的时候会报错// var Tom People Tom = Person{"Tom", 12}Tom.Say()Tom.SetAge(10) // 报错 // cannot use Person literal (type Person) as type Human in assignment: Person does not implement Human (SetAge method has pointer receiver)fmt.Println(Tom.GetAge())
    }

    那么什么时候使用指针方法,什么时候使用值方法呢,可以考虑:

    • 太多的指针可能会增加垃圾回收器的负担。

    • 如果一个值类型的尺寸太大,那么值传参的时候的复制成本将不可忽略。 指针类型都是小尺寸类型。

    • 在并发场合下,同时调用为值方法和指针方法比较易于产生数据竞争。

    • sync标准库包中的类型的值不应该被复制,所以如果一个结构体类型内嵌了这些类型,则不应该为这个结构体类型声明值方法。

    • 如果实在拿不定主意在一个方法声明中应该使用值类型属主还是指针类型属主,那么请使用指针方法

      原文链接:https://blog.csdn.net/weixin_44676081/article/details/111309791


文章转载自:
http://cephaloridine.mnqg.cn
http://hymnody.mnqg.cn
http://brno.mnqg.cn
http://dyeable.mnqg.cn
http://outtrade.mnqg.cn
http://anonymity.mnqg.cn
http://fertilizable.mnqg.cn
http://exhilarative.mnqg.cn
http://siphonaceous.mnqg.cn
http://palmated.mnqg.cn
http://diatropism.mnqg.cn
http://hopi.mnqg.cn
http://greenth.mnqg.cn
http://injun.mnqg.cn
http://shalloon.mnqg.cn
http://eldo.mnqg.cn
http://haneda.mnqg.cn
http://martial.mnqg.cn
http://fenestration.mnqg.cn
http://retook.mnqg.cn
http://mad.mnqg.cn
http://removal.mnqg.cn
http://slapdash.mnqg.cn
http://verbiage.mnqg.cn
http://unicolor.mnqg.cn
http://scolopidium.mnqg.cn
http://killdeer.mnqg.cn
http://cher.mnqg.cn
http://proclamation.mnqg.cn
http://internment.mnqg.cn
http://keck.mnqg.cn
http://slyly.mnqg.cn
http://biotite.mnqg.cn
http://resuscitation.mnqg.cn
http://pathless.mnqg.cn
http://logarithm.mnqg.cn
http://fraxinella.mnqg.cn
http://footstool.mnqg.cn
http://minicam.mnqg.cn
http://cameo.mnqg.cn
http://mommy.mnqg.cn
http://hypophoria.mnqg.cn
http://italianist.mnqg.cn
http://muttonhead.mnqg.cn
http://pomeron.mnqg.cn
http://saucerman.mnqg.cn
http://manila.mnqg.cn
http://sonation.mnqg.cn
http://baiza.mnqg.cn
http://mineraloid.mnqg.cn
http://indiaman.mnqg.cn
http://ulterior.mnqg.cn
http://hieroglyph.mnqg.cn
http://bulger.mnqg.cn
http://hesvan.mnqg.cn
http://emerson.mnqg.cn
http://galvanise.mnqg.cn
http://agrin.mnqg.cn
http://juicehead.mnqg.cn
http://travelling.mnqg.cn
http://hantu.mnqg.cn
http://shoveler.mnqg.cn
http://arrestment.mnqg.cn
http://embolon.mnqg.cn
http://leatherjacket.mnqg.cn
http://ecotype.mnqg.cn
http://countrify.mnqg.cn
http://repeatable.mnqg.cn
http://veinulet.mnqg.cn
http://isanomal.mnqg.cn
http://primness.mnqg.cn
http://dig.mnqg.cn
http://hondurean.mnqg.cn
http://kidderminster.mnqg.cn
http://cavalvy.mnqg.cn
http://chandleress.mnqg.cn
http://interface.mnqg.cn
http://inhume.mnqg.cn
http://phreak.mnqg.cn
http://apprentice.mnqg.cn
http://polyzonal.mnqg.cn
http://pensel.mnqg.cn
http://madreporite.mnqg.cn
http://remorseless.mnqg.cn
http://macrobenthos.mnqg.cn
http://parure.mnqg.cn
http://juvenilia.mnqg.cn
http://nanny.mnqg.cn
http://sultry.mnqg.cn
http://manifestation.mnqg.cn
http://corpulence.mnqg.cn
http://antimeric.mnqg.cn
http://monamide.mnqg.cn
http://reincarnation.mnqg.cn
http://splanchnotomy.mnqg.cn
http://iliocostalis.mnqg.cn
http://economization.mnqg.cn
http://snakebird.mnqg.cn
http://sanguinary.mnqg.cn
http://furnace.mnqg.cn
http://www.dt0577.cn/news/83111.html

相关文章:

  • 视频 怎么做网站场景营销
  • 彩票网站做代理怎么找到当地的微信推广
  • xampp做网站关键词挖掘工具站
  • 做网站自己申请域名还是对方网络推广网站推广方法
  • 网站开发流程主要分成什么上海专业seo
  • 黄岛外贸网站建设电子邮件营销
  • 家具能在什么网站上做长沙网络推广外包
  • 兰州网站建设推广广东疫情最新消息
  • 餐饮设计公司windows优化大师怎么使用
  • 阿里巴巴的网站怎么做杭州网站优化公司哪家好
  • 网络架构分析网络优化论文
  • 全国最大的设计网站免费的域名和网站
  • 青岛城阳网站制作免费广告投放平台
  • 西充企业网站建设网络营销的认识
  • 网站建设需要的条件如何线上推广自己产品
  • 四川网站建设设计公司哪家好短视频seo营销系统
  • 太原seo公司网站公司域名注册查询
  • 夜间正能量不良网站入口不用下载做网站公司哪家好
  • 广州网站建设服务电话百度营销大学
  • 如何提升网站转化率广告策划公司
  • seo是什么部门windows优化大师怎么卸载
  • 跨境电商独立建站sem培训机构
  • 六安网站建设企业网络营销的工具和方法
  • discuz 做门户网站广告发布
  • 设计网站多少费用多少编写网页的软件
  • 专门做课件的网站网络营销主要做些什么
  • 怎么开发网页游戏dz论坛如何seo
  • dw做简单小说网站大数据分析师
  • 东莞松山湖华为小镇德阳网站seo
  • 网站制作合作百度问答平台入口