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

大连做公司网站最优化方法

大连做公司网站,最优化方法,香河做网站公司,钉子 wordpress文章目录 4.Go语言的方法,函数,接口4.1. 方法4.1.1. 指针接受者4.1.2. 值接收者和指针接收者有什么区别?4.1.3. 方法 4.2. 接口4.2.1. 接口定义 4.3. 函数4.3.1. 函数介绍 4.Go语言的方法,函数,接口 4.1. 方法 4.1.1…

文章目录

  • 4.Go语言的方法,函数,接口
    • 4.1. 方法
      • 4.1.1. 指针接受者
      • 4.1.2. 值接收者和指针接收者有什么区别?
      • 4.1.3. 方法
    • 4.2. 接口
      • 4.2.1. 接口定义
    • 4.3. 函数
      • 4.3.1. 函数介绍

4.Go语言的方法,函数,接口

4.1. 方法

4.1.1. 指针接受者

  1. 在编程领域,指针接收者是指在定义方法时,将指针作为参数传递给方法的一种形式。这种方式可以使方法直接操作指针所指向的原始数据,而不是对参数的副本进行操作。
  2. 在Go语言中,方法可以定义在结构体类型上,接收者是方法名称前的类型声明。指针接收者是将方法绑定到接收者类型的一个指针上,因此在方法内部对接收者的修改会影响原始值。
  3. 相对于值接收者而言,指针接收者可以避免在每次调用方法时复制接收者,从而提高程序的性能。在实际应用中,应该根据具体需求选择合适的接收者类型

4.1.2. 值接收者和指针接收者有什么区别?

在编程中,值接收者和指针接收者是函数或方法参数的两种不同传递方式。它们之间的区别如下:

  1. 值传递:值接收者通过将实际参数的值复制到函数或方法内部来进行传递。在函数或方法内部对值进行的修改不会影响到原始变量。
   package mainimport "fmt"// 定义结构体type Person struct {Name stringAge  int}// 定义方法func (p Person) PrintInfo() {p.Age = 25}func main() {person := Person{Name: "Alice", Age: 20}person.PrintInfo()fmt.Println(person.Age) }

在上述示例中,PrintInfo()方法是值接收者。当调用该方法时,person的值被复制到方法内部。即使在方法内部修改了p.Age的值,原始的person.Age并不会改变。

  1. 指针传递:指针接收者通过传递指向实际参数的指针来进行传递。在函数或方法内部对指针所指向的内容进行的修改会反映在原始变量上。
   package mainimport "fmt"// 定义结构体type Person struct {Name stringAge  int}// 定义方法func (p *Person) PrintInfo() {p.Age = 25}func main() {person := Person{Name: "Alice", Age: 20}person.PrintInfo()fmt.Println(person.Age) }

在上述示例中,PrintInfo()方法是指针接收者。当调用该方法时,&person的地址被传递到方法内部。通过修改指针所指向的内容,原始的person.Age的值也会改变。

  1. 选择使用值接收者还是指针接收者取决于你的需求。如果你只需要读取参数的值,而不需要修改它,那么使用值接收者通常更简单和安全。如果你需要修改参数的值,或者在函数或方法内部通过参数进行一些复杂的操作,那么使用指针接收者更合适。

4.1.3. 方法

在 Go 语言中,方法是与特定类型关联的函数,它是一种将数据和相关操作封装在一起的方式。方法可以定义在结构体类型上,使得对结构体的操作更加方便和自然。

  1. 方法的定义格式如下:
接收者类型.方法名(参数列表) (返回值列表)
func (p Person) PrintInfo(num int) (num){}

其中,接收者类型是方法所属的类型,通常是一个结构体或接口类型。方法名是方法的名称,可以根据需要自行定义。参数列表是方法接受的参数,可以包含零个或多个参数。返回值列表是方法返回的结果,可以包含零个或多个返回值。
2. 以下是一个示例,定义了一个名为PrintInfo的方法在Person结构体上:

package mainimport "fmt"// 定义结构体
type Person struct {Name stringAge  int
}// 定义方法
func (p Person) PrintInfo() {fmt.Println("Name:", p.Name)fmt.Println("Age:", p.Age)
}

在这个示例中,PrintInfo方法接受一个Person类型的接收器,并打印出该结构体的姓名和年龄。

  1. 要调用方法,可以使用以下语法:
接收者.方法名(参数)
  1. 例如,对于上面定义的Person结构体和PrintInfo方法,可以这样调用:
package mainimport "fmt"func main() {// 创建结构体实例p := Person{Name: "Alice", Age: 25}// 调用方法p.PrintInfo()
}

通过这种方式,我们可以将数据和相关操作封装在一起,提高代码的可读性和可维护性。
除了普通方法,Go 语言还支持指针接收器方法和接口方法。指针接收器方法可以通过指针修改接收者的字段值,而接口方法允许实现了特定接口的任意类型对象调用该方法。

4.2. 接口

4.2.1. 接口定义

  1. 接口类型 是由一组方法签名定义的集合。
  2. 接口的声明与使用:
package mainimport ("fmt""math"
)
//接口声明(形状)
type Shape interface {Area() float64Perimeter() float64
}//矩形结构体
type Rect struct {width  float64height float64
}//圆的结构体
type Circle struct {radius float64
}//计算面机的方法(矩形实现)
func (r Rect) Area() float64 {return r.width * r.height
}//计算周长(矩形实现)
func (r Rect) Perimeter() float64 {return 2 * (r.width + r.height)
}//计算面积的方法(圆实现)
func (c Circle) Area() float64 {return math.Pi * c.radius * c.radius
}//计算周长(圆实现)
func (c Circle) Perimeter() float64 {return 2 * math.Pi * c.radius
}func main() {
//声明接口类型的变量,具体值为矩形var s Shape = Rect{10, 3}fmt.Printf("type of s is %T\n", s)fmt.Printf("value of s is %v\n", s)fmt.Printf("value of s is %0.2f\n\n", s.Area())//声明接口类型的变量,具体值为圆s = Circle{10}fmt.Printf("type of s is %T\n", s)fmt.Printf("value of s is %v\n", s)fmt.Printf("value of s is %0.2f\n", s.Area())}
  1. 此外接口是golang中实现多态性的唯一好途径。
  2. go语言中还有空接口的概念,这里不做赘述。

4.3. 函数

4.3.1. 函数介绍

在 Go 语言中,函数是一种用于组织和重用代码的基本单位。函数可以执行特定的任务,并可以接受零个或多个参数,并返回零个或多个值。
以下是 Go 语言中函数的一些关键特性和语法:

  1. 函数定义:使用func关键字开始函数定义。函数名是你为函数指定的名称,参数列表列出了函数接受的参数(如果有),函数体包含了执行任务的具体代码。
func functionName(parameters) results {// 函数体
}
  1. 函数调用:通过函数名和相应的参数来调用函数。
functionName(arguments)
  1. 参数传递:函数可以通过值、引用或切片等方式传递参数。
    返回值:函数可以返回零个或多个值。
func functionName() results {// 返回值return values
}
  1. 匿名函数:可以定义匿名函数,即没有具名函数的函数。
func() {// 匿名函数体
}

函数作为参数:Go 语言允许将函数作为参数传递给其他函数。
递归函数:函数可以递归地调用自己。
Go 语言中的函数是第一类对象,可以作为变量、参数和返回值进行传递和操作。这使得函数在 Go 语言中具有高度的灵活性和可复用性。
此外,go中还有 一等函数和闭包的概念,这边先不做解释

http://www.hkea.cn/news/474379/

相关文章:

  • 宁波有做网站的地方吗seo报价单
  • 深圳企业网站开发中国法律服务网app最新下载
  • 大连企业网站建站国外域名注册网站
  • 站长工具seo综合查询权重百度在线搜索
  • 伊犁网站建设评价怎样才能上百度
  • 房地产网站建设方案百度实名认证
  • 做外贸可以在哪些网站注册网络项目免费的资源网
  • 中国建设银行信用卡网站首页青岛关键词优化平台
  • 阿里云网站建设考试题目长沙网站推广服务公司
  • 甘肃建设项目审批权限网站俄罗斯搜索引擎yandex官网入口
  • 网站建设公司新员工培训ppt模板百度热门搜索排行榜
  • 仿魔客吧网站模板网址大全是ie浏览器吗
  • 网站产品后台界面怎么做湖南关键词排名推广
  • 网站数据每隔几秒切换怎么做的湖南百度seo排名点击软件
  • 网站制作先学什么百度新闻下载安装
  • 河南省网站建设哪家好免费观看行情软件网站进入
  • 粘合剂东莞网站建设体育热点新闻
  • 百度网站排名关键词整站优化培训网站建设
  • 网络平台代理seo外包 杭州
  • 东方头条网站源码免费推广软件工具
  • 北京网站建设公司分享网站改版注意事项流程优化四个方法
  • 案例学 网页设计与网站建设手机百度seo快速排名
  • 江门网站建设总部电话产品推广渠道有哪些
  • 网站建设全攻略站长之家ping检测
  • 导航网站 cmsgoogle chrome谷歌浏览器
  • wordpress看其他人博客优化师是做什么的
  • 现在哪个网站还做白拿2021小说排行榜百度风云榜
  • 网站流量seo提升seo排名的方法
  • 做html网站模板下载地址网站页面布局和样式设计
  • 公司网站邮箱费用磁力宅在线搜种子