package main
import (
"fmt"
"math"
)
type Vertex struct {
X, Y float64
}
func (v Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func FABS(v Vertex) float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func main() {
v := Vertex{3, 4}
fmt.Println(v.Abs())
fmt.Println(FABS(v))
}
运行结果
5
5
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这段代码是用Go语言编写的,它定义了一个名为Vertex
的结构体类型,用于表示二维空间中的一个点,具有X和Y两个坐标值。同时定义了两个计算该点到原点欧几里得距离的方法:一个是作为Vertex
类型的实例方法Abs()
,另一个是作为普通函数FABS()
。
Abs()
方法通过接收者(v Vertex)实现,调用时直接通过结构体实例v.Abs()访问。FABS()
函数则直接接收一个Vertex
类型的参数v。两个函数内部实现都是利用勾股定理计算点(v.X, v.Y)到原点(0,0)的距离。
在main
函数中,创建了一个Vertex
类型的变量v,其坐标为(3, 4),然后分别调用了Abs()
方法和FABS()
函数来计算这个点到原点的距离,并打印结果。由于数学计算正确,两次计算的结果均为5,这符合预期,因为点(3,4)到原点的确切距离是5(根据勾股定理,( \sqrt{3^2 + 4^2} = \sqrt{9 + 16} = \sqrt{25} = 5 ))。