# Diamond interface composition in Go 1.14

DevFeed: [Diamond interface composition in Go 1.14](<https://devfeed.tech/articles/diamond-interface-composition-in-go-1-14-20833.md>)

Original publisher: [Read original article](<https://dave.cheney.net/2020/05/24/diamond-interface-composition-in-go-1-14>)

Author: Dave Cheney

Published: 2020-05-24T08:49:01Z

Content type: article

Language: en

Sources: [Dave Cheney](<https://devfeed.tech/sources/dave-cheney.md>)

Topics: [Go Language](<https://devfeed.tech/topics/go-language.md>), [modules](<https://devfeed.tech/topics/modules.md>), [Compiler](<https://devfeed.tech/topics/compiler.md>)

Tags: [compiler](<https://devfeed.tech/tags/compiler.md>), [embedded](<https://devfeed.tech/tags/embedded.md>), [embedding](<https://devfeed.tech/tags/embedding.md>), [go](<https://devfeed.tech/tags/go.md>), [interfaces](<https://devfeed.tech/tags/interfaces.md>), [module](<https://devfeed.tech/tags/module.md>), [modules](<https://devfeed.tech/tags/modules.md>), [programming](<https://devfeed.tech/tags/programming.md>)

## AI overview

A brief explanation of Go 1.14's support for composing interfaces with overlapping method sets, including how embedding compares with explicit declarations and how it resolves diamond-shaped embedding limitations.

## Source excerpt

Per the overlapping interfaces proposal, Go 1.14 now permits embedding of interfaces with overlapping method sets. This is a brief post explain what this change means: Let's start with the definition of the three key interfaces from the io package; io.Reader, io.Writer, and io.Closer: Just as embedding a type inside a struct allows the embedded type's [...]