17. Structs(类)

17.1. Python

#!/usr/bin/env python
# -*- coding:utf8 -*-
# auther; 18793
# Date:2020/4/21 13:50
# filename: sample1.py
from __future__ import division
from math import sqrt


class Point(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y


def distance(point1, point2):
    return sqrt(point1.x * point2.x + point1.y * point2.y)


p1 = Point(1, 3)
p2 = Point(2, 4)
print(distance(p1, p2))  # 3.74165738677

17.2. Go

package main

import (
    "fmt"
    "math"
)

type Point struct {
    x float64
    y float64
}

func distance(point1 Point, point2 Point) float64 {
    return math.Sqrt(point1.x*point2.x + point1.y*point2.y)
}

//由于结构会自动复制,
//最好将其作为指针传递。
func distance_better(point1 *Point, point2 *Point) float64 {
    return math.Sqrt(point1.x*point2.x + point1.y*point2.y)
}

func main() {
    p1 := Point{
        x: 1,
        y: 3,
    }
    p2 := Point{
        x: 2,
        y: 4,
    }

    fmt.Println(distance(p1, p2))               //3.7416573867739413
    fmt.Println(distance_better(&p1, &p2))      //3.7416573867739413
}