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

asp.net获取网站虚拟目录软件开发有哪些类型

asp.net获取网站虚拟目录,软件开发有哪些类型,建构网站西安,做百度移动网站快速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://www.yayakq.cn/news/412178/

相关文章:

  • 学校网站建设答辩苏州专业网站制作设计
  • 微网站在线制作网站优化排名技巧
  • 个人做游戏下载网站侵权吗北京seo排名服务
  • 网上卖货哪个平台比较好抓取的网站如何做seo
  • 西安微信网站建设公司禅城技术支持骏域网站建设
  • 企业管理专业主要课程南宁网站seo大概多少钱
  • 营销型网站建设遨龙非寻服饰网站建设规划书
  • 烟台海阳市专业做网站公司 做网站
  • 品牌网站建设有哪些方面邢台做移动网站多少钱
  • 企业内网网站建设找个人做网站还是找企业做网站
  • 张店易宝网站建设网站建设多少钱裙
  • 网站推广软件污电商网站模板建站
  • 一级a做爰片2202网站辽宁建网站
  • 网站工商备案查询班级网站建设模板
  • 广州建筑工程公司名单浙江专业网站seo
  • 手表网网站用万网建设网站教程视频
  • 网站整合营销建设深圳优化企业
  • 注册网站时跳过验证码上海公司注册网上核名
  • cms 多个网站精品wordpress 模板
  • 自己做网站还能挣钱吗固安企业网站建设
  • 网站开发的国内外研究现状创新设计案例100个
  • angularjs 网站模板网站建设与管理专业好找工作吗
  • 怎么做网店网站大连建设工程招标信息网官网
  • win7 iis架设网站大连科技公司建设网站
  • 做贸易进出口要什么网站平台泸州市住房和城乡建设厅官方网站
  • 百度免费网站建设网站seo去哪个网站找好
  • 宝塔怎么做两个网站的解析云南网络公司
  • 做网页和网站有什么区别吗上海市建设工程招标公告
  • 东莞网站建设定制用wordpress建wiki
  • 广州网站推广教程网站后台怎么做友情链接