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

建设银行无锡分行网站网站建设优化服务咨询

建设银行无锡分行网站,网站建设优化服务咨询,做五金奖牌进什么网站,西安广告公司排名top10先思考一个问题#xff0c;什么是方法#xff0c;什么是函数#xff1f; 方法是从属于某个结构体或者非结构体的。在func这个关键字和方法名中间加了一个特殊的接收器类型#xff0c;这个接收器可以是结构体类型的或者是非结构体类型的。从属的结构体获取该方法。 函数则…先思考一个问题什么是方法什么是函数 方法是从属于某个结构体或者非结构体的。在func这个关键字和方法名中间加了一个特殊的接收器类型这个接收器可以是结构体类型的或者是非结构体类型的。从属的结构体获取该方法。 函数则没有这种从属关系。 func (t Type) methodName(parameter list) { } type Teacher struct {name stringsalary intcurrency string }// 在结构体类型上创建一个方法并调用。 func (tea Teacher) testSalary() {fmt.Printf(Salary of %s is %d %s, tea.name, tea.salary, tea.currency) }func testUpFun() {tea: Teacher{name: malou,salary: 10666,currency: 元,}tea.testSalary() } 相同的名字的方法可以定义在不同的类型上而相同名字的函数是不允许的 // Rectangle 定义Rectangle结构体 type Rectangle struct {length intwidth int }// Circle 定义Circle 结构体 type Circle struct {radius float64 }func (rectangle Rectangle) Area() int {return rectangle.width * rectangle.length }func (circle Circle) Area() float64 {return math.Pi * circle.radius * circle.radius }func testArea() {r : Rectangle{width: 10,length: 20,}fmt.Printf(Area is %d\n, r.Area())c : Circle{radius: 12,}fmt.Printf(Area is %f\n, c.Area()) } 值接收器和指针接收器之间的区别在于在指针接收器的方法内部的改变对于调用者是可见的然而值接收器的情况不是这样的。 // Dog struct type Dog struct {name stringage int }// 使用值接收器的方法 func (d Dog) changeDogName(newName string) {d.name newName }// 使用指针接收器的方法 func (d *Dog) changeAge(newAge int) {d.age newAge }func testPointerStruct() {d : Dog{name: 金mao,age: 22,}// 并没有改变实际的值只是改变的变量的副本fmt.Printf(before change is %s\n, d.name)d.changeDogName(马犬)fmt.Printf(after change is %s\n, d.name)// 改变的是变量本身的值fmt.Printf(before change is %d\n, d.age)d.changeAge(11)fmt.Printf(after change is %d\n, d.age) } 那什么时候使用指针接收器什么时候使用值接收器指针接收器可以使用在对方法内部的接收器所做的改变应该对调用者可见时。当拷贝一个结构体的代价过于昂贵的时候比如说结构体中有很多字段如果方法内使用这个结构体做为值接收器需要拷贝整个结构体这个代价十分昂贵这种情况下使用指针接收器结构体不会被拷贝只会传递一个指针到方法的内部。在其他的所有情况值接收器都可以被使用。在方法中使用值接收器 和 在函数中使用值参数type rectangle struct {width intlength int } // 函数中的参数值类型只能传递一个值类型 func area(r rectangle) {fmt.Printf(Area Function result :%d\n, r.length*r.width) }func (r rectangle) area() {fmt.Printf(Area Method result :%d\n, r.length*r.width) }func testFunAndMethod() {r : rectangle{width: 10,length: 15,}area(r)r.area()p : r// (*p).area(),go解释器会自动的解引用p.area() }// 在方法中使用指针和在函数中使用指针参数 func (r *rectangle) perimeter() {fmt.Printf(Area Method result is %d\n, r.width*r.length) }func perimeter(r *rectangle) {fmt.Printf(Area Function result is %d\n, r.width*r.length) }func testPointerStruct1() {r : rectangle{width: 12,length: 10,}p : rperimeter(p)p.perimeter()// r.perimeter() 解释为 (r).perimeter() 还有一种是(*p).name 相互解引用从指针p-(*p)从值r到指针(r)r.perimeter() } 小结 大多数方法都使用的是结构体从属注意传递的是值传递还是指针传递。
http://www.yutouwan.com/news/493139/

相关文章:

  • 仿网站源码是怎么弄的wordpress商城主题模板
  • 网站布局如何修改wordpress 购买主题
  • 贵州城乡建设厅施工员报名网站wordpress获取文章中的图片不显示
  • 软件做网站正在备案怎么建网站
  • 北京延庆城乡建设部网站首页经营地址怎么在国税网站做更改
  • 厦门网站建设是什么网站平台建设哪家公司好
  • 霸州网站开发建设银行六安市分行网站
  • 龙岗网站建设价格网站推广该怎么做
  • 做水电到哪个网站找信息网站改版 升级的目的是什么意思
  • 做网站需要留什么做网站需要哪些步骤
  • 广西网站建设开发外包WordPress协会学院主题模板
  • 哈尔滨网站建设维护攀枝花住房和城乡建设厅网站
  • 网站建设销售工作职责建设的基本流程网站
  • html5 网站 适配手机手机h5网站开发
  • 做聊天室cpa用什么类型的网站好怎么样自己做企业网站
  • 专业做网站关键词排名下掉西安网站建设推广公司哪家好
  • 张家口网站建设价格十堰网站建设联系电话
  • 江门企业免费建站在线视频网站建设
  • 泰州快速建站模板竞价sem托管公司
  • 小语言网站建设长沙seo代理商
  • 黑龙江省建设安全网站苏州我可以网络科技有限公司
  • 做一个网站的预算用asp.net做购物车网站
  • 外贸网站建设视频教程网站添加wordpress博客
  • 企业定制网站建设公司哪家好怎么 从头开始建设一个网站
  • 网站 建设在作用是什么如何把网站上传到网上
  • 朔州网站建设收费全球购海外商城官网
  • 做寝室介绍网站163企业邮箱免费
  • 做服装招聘的网站网站制作现状解决方案
  • 邵阳市城乡建设厅网站番禺网站开发系统
  • 深圳网站策划推广百度小说