kouzdra (kouzdra) wrote,
kouzdra
kouzdra

Category:

goбъектное-3

Для комплекта еще пример switch по типу значения:

func sumCoor(p Point) float64 {
	switch p := p.(type) {
		case Point2D: return p.x+p.y
		case Point3D: return sumCoor(p.Point2D) + p.z
	}
	panic ("unknown point type")
}

func main() {
	fmt.Println(sumCoor(p2))
	fmt.Println(sumCoor(p3))
}

Смысл понятен, единственное, что может стоит пояснить - p в данном операторе переобъявляется (можно дать и другое имя, но данный вариант в go является идиоматическим) и в таком контексте новая переменная в каждой ветке рассматривается как имеющая соответствующий метке тип.

На сам деле точный аналог оператора в Simula-67, ЕВПОЧЯ
Tags: go, goбьектное, Компутерщина, Языки программирования
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments