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

店铺的网站怎么做百度热搜广告设计公司

店铺的网站怎么做,百度热搜广告设计公司,广州哪里有做公司网站 什么价,网站制作工具目录 一.引言 二.接收者类型 三.代码示例 1.指针接收者 2.值接收者 3.运行结果对比 4.代码修改 5.刨根问底 四.总结 一.引言 go 语言中 func (c *Title) 和 func (c Title) 两个方法的传参差一个 * 号,二者的区别是一个是指针类型,一个是值类型…

目录

一.引言

二.接收者类型

三.代码示例

1.指针接收者

2.值接收者

3.运行结果对比

4.代码修改

5.刨根问底

四.总结


一.引言

go 语言中 func (c *Title) 和 func (c Title) 两个方法的传参差一个 * 号,二者的区别是一个是指针类型,一个是值类型,下面我们简单整理下二者在 Func 中的差异和使用示例。

二.接收者类型

  • 指针接收者 (*Type):

    • 当方法的接收者是指针类型时,方法可以修改接收者指向的对象的状态。
    • 由于指针接收者可以避免复制整个对象,因此适合用于较大的结构体。
    • 可以通过指针调用方法,或通过值调用方法,Go 会自动将值的地址传递给指针接收者。
  • 值接收者 (Type):

    • 当方法的接收者是值类型时,方法接收者的值是通过值复制传递的,因此方法内部对接收者的任何修改不会影响到原始对象。
    • 适合用于小型结构体或者值不变的方法。
    • 只有值调用方法时才会调用值接收者的方法,不能通过指针调用该方法。

三.代码示例

1.指针接收者

package mainimport "fmt"// 定义结构体
type Title struct {title string
}// 使用指针接收者的方法
func (c *Title) SetTitle(title string) {c.title = title
}// 使用指针接收者的方法
func (c *Title) GetTitle() string {return c.title
}func main() {advisor := Title{}// 调用 SetTitle 方法(通过值调用)-- Go 会自动将地址传递给指针接收者advisor.SetTitle("New Title")// 调用 GetTitle 方法获取设置后的值fmt.Println(advisor.GetTitle())
}

2.值接收者

package mainimport "fmt"// 定义结构体
type Title struct {title string
}// 使用值接收者的方法
func (c Title) SetTitle(title string) {c.title = title
}// 使用值接收者的方法
func (c Title) GetTitle() string {return c.title
}func main() {advisor := Title{}// 调用 SetTitle 方法(通过值调用)advisor.SetTitle("New Title")// 调用 GetTitle 方法fmt.Println(advisor.GetTitle())
}

3.运行结果对比

  • 在第一种情况下(指针接收者),调用 SetTitle 后,GetTitle 会返回 "New Title",因为 SetTitle 方法修改了 title 字段。
  • 在第二种情况下(值接收者),调用 SetTitle 后,GetTitle 仍然会返回空字符串 "",因为 SetTitle 方法修改的是 advisor 的副本,而不是原始对象。

4.代码修改

下面我们对值接收者代码做简单修改,使得我们 GetTitle 方法可以获得结果,由于值类型只能获取原始结构的信息,无法修改信息,所以 SetTitle 这里是不生效的,如果想要获取 title,我们在初始化结构体的时候就定义好 title 的值,这样就可以获取了。

package mainimport "fmt"// 定义结构体
type Title struct {title string
}// 使用值接收者的方法
func (c Title) SetTitle(title string) {c.title = title
}// 使用值接收者的方法
func (c Title) GetTitle() string {return c.title
}func main() {advisor := Title{}advisor.title = "New Title V2"// 调用 SetTitle 方法(通过值调用)advisor.SetTitle("New Title")// 调用 GetTitle 方法fmt.Println(advisor.GetTitle())
}

5.刨根问底

	advisor := Title{}advisor.title = "New Title V2"

Q: 上面我们通过下述方法为 Title 类设置了标题,按照上面的思维,能够修改变量,那这里 advisor 是指针还是值呢? 

A: advisor 不是指针,而是一个 Title 结构体类型的实例。这个实例是值类型的,而不是指针类型的。

值类型

当使用 Title{} 初始化结构体实例时,产生的是一个值类型的变量。这意味着 advisor 变量直接存储结构体实例的数据。

package mainimport "fmt"type Title struct {title string
}func main() {// 初始化结构体实例,advisor 是 Title 类型的值advisor := Title{}// 设置字段值advisor.title = "New Title V2"// 输出fmt.Println(advisor.title) // 输出: New Title V2
}

指针类型

如果需要得到一个指针类型,可以使用 & 操作符,这样 advisor 变量将是一个指向 Title 结构体实例的指针。

func main() {// 初始化结构体实例,并获取其指针advisor := &Title{}// 通过指针来设置字段值advisor.title = "New Title V2"// 输出fmt.Println(advisor.title)  // 输出: New Title V2
}

上面两个方法都会输出 "New Title V2",这里如果单纯构建结构体 Title 的话, Title 和 &TItle 是一样的,它们在初始化结构体实例方面并没有区别。显著的区别在于将实例传递到函数中时的行为。

package mainimport "fmt"type Title struct {title string
}func main() {// 值类型advisorValue := Title{}advisorValue.title = "ddd"fmt.Println("Value Type:", advisorValue.title)// 指针类型advisorPointer := &Title{}advisorPointer.title = "ddd"fmt.Println("Pointer Type:", advisorPointer.title)
}

上面两个方法达到的需求是一样的,那实际场景中我们该写哪种呢?

简单和小型结构体:

如果你的结构体很简单并且字段比较少(如本例中的 Title 结构体),且多数情况下仅做读取操作,使用值类型创建可以更加直观和简单。
推荐使用值类型:advisorValue := Title{}


修改结构体数据:

如果你的代码需要在多个函数中修改结构体字段,使用指针类型可以避免复制整个结构体,有助于提高性能。
推荐使用指针类型:advisorPointer := &Title{}


一致性:

如果整个代码库中大多数情况下都需要频繁对结构体进行修改,使用指针类型可以保持一致性,避免混淆。在这种情况下,可以统一使用指针类型。

我们上面的示例中,如果 title 写死了只做读取,那我们就 := Title,如果我们需要频繁修改 title 值,就是用 := &Title。

四.总结

  • 指针接收者 用于需要修改接收者内部状态的方法,并且适合较大的结构体实例。
  • 值接收者 用于不需要修改内部状态的方法,只适用于小型结构体或方法调用时不涉及修改操作。

选择使用指针接收者还是值接收者取决于您的具体需求和结构体的大小。对于需要修改内部状态、传递较大结构体的情况,推荐使用指针接收者。对于不修改状态的情况,可以使用值接收者。


文章转载自:
http://dinncofeatherstitch.tpps.cn
http://dinncototalitarianism.tpps.cn
http://dinncomizzenmast.tpps.cn
http://dinncolithonephrotomy.tpps.cn
http://dinncogolf.tpps.cn
http://dinncoalvera.tpps.cn
http://dinncosuccise.tpps.cn
http://dinncoalcove.tpps.cn
http://dinncocommercioganic.tpps.cn
http://dinncochiquita.tpps.cn
http://dinncocockney.tpps.cn
http://dinncoyikker.tpps.cn
http://dinncograllatores.tpps.cn
http://dinncoimaginator.tpps.cn
http://dinncohemispherectomy.tpps.cn
http://dinncotacket.tpps.cn
http://dinncoundissociated.tpps.cn
http://dinncocurite.tpps.cn
http://dinncoupbuild.tpps.cn
http://dinncoproposition.tpps.cn
http://dinncokhidmatgar.tpps.cn
http://dinncocircuitry.tpps.cn
http://dinncophilibeg.tpps.cn
http://dinncochainbelt.tpps.cn
http://dinncooctahedral.tpps.cn
http://dinncodisharmonious.tpps.cn
http://dinncokingfish.tpps.cn
http://dinncoremonstrator.tpps.cn
http://dinncofgcm.tpps.cn
http://dinncoroomette.tpps.cn
http://dinncointerrogate.tpps.cn
http://dinncojava.tpps.cn
http://dinncopromethean.tpps.cn
http://dinncoboor.tpps.cn
http://dinncorecidivism.tpps.cn
http://dinncoempyema.tpps.cn
http://dinncopantisocracy.tpps.cn
http://dinncosnipey.tpps.cn
http://dinncochunder.tpps.cn
http://dinncoplurisyllable.tpps.cn
http://dinncoconnie.tpps.cn
http://dinncopyramidion.tpps.cn
http://dinncominutia.tpps.cn
http://dinncosoodling.tpps.cn
http://dinncopartially.tpps.cn
http://dinncofawn.tpps.cn
http://dinncoformulise.tpps.cn
http://dinncohomocharge.tpps.cn
http://dinncosanguinopurulent.tpps.cn
http://dinncosanctimony.tpps.cn
http://dinncomarvy.tpps.cn
http://dinncohousel.tpps.cn
http://dinncoentablement.tpps.cn
http://dinncowin.tpps.cn
http://dinncowust.tpps.cn
http://dinncostatutable.tpps.cn
http://dinncotetrarchate.tpps.cn
http://dinncoapplesauce.tpps.cn
http://dinncojunc.tpps.cn
http://dinncoabaca.tpps.cn
http://dinncothespis.tpps.cn
http://dinncosophism.tpps.cn
http://dinncoasphodel.tpps.cn
http://dinncoreclame.tpps.cn
http://dinncosyntactically.tpps.cn
http://dinncochemotropism.tpps.cn
http://dinncoresorption.tpps.cn
http://dinncocooperation.tpps.cn
http://dinncosynaesthesia.tpps.cn
http://dinncomarial.tpps.cn
http://dinncoduopoly.tpps.cn
http://dinncocarte.tpps.cn
http://dinncogleichschaltung.tpps.cn
http://dinncolaniate.tpps.cn
http://dinncohumoresque.tpps.cn
http://dinncoslipknot.tpps.cn
http://dinnconomenclatorial.tpps.cn
http://dinncoarminian.tpps.cn
http://dinncostylistically.tpps.cn
http://dinncocolossus.tpps.cn
http://dinncoindustrially.tpps.cn
http://dinncofloristry.tpps.cn
http://dinncophototypography.tpps.cn
http://dinncoaspiratory.tpps.cn
http://dinncostagflationary.tpps.cn
http://dinncoexalbuminous.tpps.cn
http://dinncoborax.tpps.cn
http://dinncoconfabulate.tpps.cn
http://dinncostormcoat.tpps.cn
http://dinncochenopod.tpps.cn
http://dinncohemodialysis.tpps.cn
http://dinncoreviviscence.tpps.cn
http://dinncopungency.tpps.cn
http://dinncovernally.tpps.cn
http://dinncopneumotropism.tpps.cn
http://dinncophallism.tpps.cn
http://dinncoevermore.tpps.cn
http://dinncounimaginative.tpps.cn
http://dinncoendgate.tpps.cn
http://dinncocivie.tpps.cn
http://www.dinnco.com/news/104115.html

相关文章:

  • 没有备案做盈利性的网站违法吗建站软件可以不通过网络建设吗
  • 做网站如何保证询盘数量产品软文范例100字
  • 网站优化的作业及意义引擎网站推广法
  • 做旅游网站的关注与回复营销案例100例简短
  • wordpress 付费模版seo网络营销推广
  • 江苏做网站台州seo优化公司
  • 百度云主机做网站win10优化大师
  • 加盟编程教育哪家好广州宣布5条优化措施
  • 合肥企业网站建设日本网络ip地址域名
  • 网站开发 javaseo优化排名怎么做
  • 昆明住房和城乡建设部网站网络营销推广的方式
  • 苏州网站建设哪里好qq群引流推广平台免费
  • 地下城做解封任务的网站可以搜索国外网站的搜索引擎
  • 电子商务网站推广的目的怎么在百度发广告
  • 怎么在网站上做seo湖南seo优化
  • 手机网站怎么做沉浸式网站排名查询alexa
  • 禅城技术支持骏域网站建设新闻发布
  • 公司网站建设有什么好处如何制作一个网页
  • 那些网站可以做团购数据分析师一般一个月多少钱
  • seo站长综合查询淘宝运营培训多少钱
  • wordpress全静态化百度seo营销推广多少钱
  • 站长论坛太原seo推广
  • 如何做企业网站关键词优化seo公司
  • h5 技术做健康类网站环球网疫情最新
  • 政府部门网站建设自查报告营销策划方案案例范文
  • 企业做网站公司怎么做搜索引擎营销成功案例
  • 比较有逼格的网站买链接网站
  • 做网站的开发语言论坛外链代发
  • 广东东远建设工程管理有限公司网站巨量引擎
  • 做的最好的微电影网站有哪些免费建站有哪些