Go Model and Object Oriented Programming.

Haiyang Liu,Zongyan Qiu
DOI: https://doi.org/10.1007/978-3-319-24012-1_5
2015-01-01
Abstract:Go is a contemporary language aiming to support OO programming where the core OO feature, inheritance, is intentionally excluded. Go uses the concepts of embedding and interface to provide its object model. To understand the design of Go and its consequences, we develop a simple Go-like model language, mini-Go, which abstracts Go's interface-based OO features. The formal defined type system and semantics are given. In addition, we propose an even simpler language $$\\mu $$Go where the feature of pointers is further removed. We demonstrate that $$\\mu $$Go is as expressive in OO as the original language with pointers, which provides a uniform model for Go-like OO programming. We investigate the OO model of the Go-like languages using $$\\mu $$Go in detail, point out that the absence of open recursion brings difficulties in OO design, and then propose a novel design pattern to mimic the open recursion feature to overcome the difficulties.
What problem does this paper attempt to address?