Go 编程语言方法

GolangGolangBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验旨在测试对 Go 编程语言方法特性的了解。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/ObjectOrientedProgrammingGroup(["Object-Oriented Programming"]) go/ObjectOrientedProgrammingGroup -.-> go/methods("Methods") subgraph Lab Skills go/methods -.-> lab-15488{{"Go 编程语言方法"}} end

方法

提供的代码定义了一个名为 rect 的结构体类型,它有两个字段:widthheight。为这个结构体类型定义了两个方法:areaperimarea 方法计算矩形的面积,perim 方法计算矩形的周长。主函数调用这两个方法并打印结果。

  • area 方法的接收者类型应为 *rect
  • perim 方法的接收者类型应为 rect
  • area 方法应返回矩形的面积。
  • perim 方法应返回矩形的周长。
  • main 函数应调用这两个方法并打印结果。
$ go run methods.go
面积: 50
周长: 30
面积: 50
周长: 30

## 接下来我们将看看 Go 语言用于对相关方法集进行分组和命名的机制:接口。

以下是完整代码:

// Go 语言支持在结构体类型上定义 _方法_。

package main

import "fmt"

type rect struct {
	width, height int
}

// 这个 `area` 方法的 _接收者类型_ 是 `*rect`。
func (r *rect) area() int {
	return r.width * r.height
}

// 方法可以为指针或值接收者类型定义。这里是一个值接收者的示例。
func (r rect) perim() int {
	return 2*r.width + 2*r.height
}

func main() {
	r := rect{width: 10, height: 5}

	// 这里我们调用为我们的结构体定义的两个方法。
	fmt.Println("面积: ", r.area())
	fmt.Println("周长: ", r.perim())

	// Go 语言会自动处理方法调用时的值和指针之间的转换。你可能希望使用指针接收者类型,以避免在方法调用时进行复制,或者允许方法修改接收的结构体。
	rp := &r
	fmt.Println("面积: ", rp.area())
	fmt.Println("周长: ", rp.perim())
}

总结

本实验测试了你在 Go 语言中定义方法并使用它们对结构体类型进行计算的能力。为 rect 结构体类型定义了 areaperim 方法,main 函数调用这些方法并打印结果。