分别求数轴上两点间的距离(这道题你还会吗)

“求平面直角坐标系内两个点之间的距离”,这样的题目大家一定不会陌生,本篇我就帮着大家复习一下,并用Go语言把这个算法实现一下。

Go 语言的方法封装非常简单,它不需要在结构体内定义方法,而是像一个普通函数那样 在结构体外部定义,但是方法一定要体现出调用者(或叫接收器),这种定义的方法只能是该调用 者类型的对象才能调用,这体现的就是封装。方法的定义方式如下:

分别求数轴上两点间的距离(这道题你还会吗)(1)

可以看到,除了 (obj ObjT) 部分,其他与之前介绍的函数定义没有区别。这个 obj 就是表明该 方法是归属于哪个类型,只有对应类型的对象才能调用这种方法。下面我们用面向对象思想来计算 平面直角坐标系中(0,0)和(4,3)两点之间的距离。

分别求数轴上两点间的距离(这道题你还会吗)(2)

我们对于这个问题肯定不陌生,在直角坐标系内,一个点可以用一组横坐标和纵坐标来构成, 可以定义一个“Point”的结构,内部包含成员 x 和 y。

分别求数轴上两点间的距离(这道题你还会吗)(3)

想要计算 2 个点的距离,就要先定义 2 个点 p1 和 p2,然后用下面的数学公式计算就可以得到 p1 和 p2 之间的距离了。

分别求数轴上两点间的距离(这道题你还会吗)(4)

计算平方根需要借助 Go 语言 math 包中的 Sqrt 函数,其余的就都不是问题了。先不考虑面向对象的方式实现一个函数,这个函数就需要把 2 个点 p1 和 p2 都作为参数传进来,返回的结果就是 它们之间的距离。

分别求数轴上两点间的距离(这道题你还会吗)(5)

如果从面向对象的角度去实现,就要站在对象的角度去思考问题,这里的对象其实是一个点, 站在一个点的角度去求到另外一个点的距离同样可以实现题目的要求。这样的方法只需要传递一个 参数就够了。

分别求数轴上两点间的距离(这道题你还会吗)(6)

完整的代码展示如下:

分别求数轴上两点间的距离(这道题你还会吗)(7)

getDis2 就是为 Point 类型封装的方法,它只能被 Point 类型的对象调用。利用 p2 调用 getDis2 也是代表了求 p2 到 p1 的距离。执行代码,我们将可以看到心心念念的 5。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页