“求平面直角坐标系内兩個點之間的距離”,這樣的題目大家一定不會陌生,本篇我就幫着大家複習一下,并用Go語言把這個算法實現一下。
Go 語言的方法封裝非常簡單,它不需要在結構體内定義方法,而是像一個普通函數那樣 在結構體外部定義,但是方法一定要體現出調用者(或叫接收器),這種定義的方法隻能是該調用 者類型的對象才能調用,這體現的就是封裝。方法的定義方式如下:
可以看到,除了 (obj ObjT) 部分,其他與之前介紹的函數定義沒有區别。這個 obj 就是表明該 方法是歸屬于哪個類型,隻有對應類型的對象才能調用這種方法。下面我們用面向對象思想來計算 平面直角坐标系中(0,0)和(4,3)兩點之間的距離。
我們對于這個問題肯定不陌生,在直角坐标系内,一個點可以用一組橫坐标和縱坐标來構成, 可以定義一個“Point”的結構,内部包含成員 x 和 y。
想要計算 2 個點的距離,就要先定義 2 個點 p1 和 p2,然後用下面的數學公式計算就可以得到 p1 和 p2 之間的距離了。
計算平方根需要借助 Go 語言 math 包中的 Sqrt 函數,其餘的就都不是問題了。先不考慮面向對象的方式實現一個函數,這個函數就需要把 2 個點 p1 和 p2 都作為參數傳進來,返回的結果就是 它們之間的距離。
如果從面向對象的角度去實現,就要站在對象的角度去思考問題,這裡的對象其實是一個點, 站在一個點的角度去求到另外一個點的距離同樣可以實現題目的要求。這樣的方法隻需要傳遞一個 參數就夠了。
完整的代碼展示如下:
getDis2 就是為 Point 類型封裝的方法,它隻能被 Point 類型的對象調用。利用 p2 調用 getDis2 也是代表了求 p2 到 p1 的距離。執行代碼,我們将可以看到心心念念的 5。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!