Skip to Content
Learning Functional Programming in Go
book

Learning Functional Programming in Go

by Lex Sheehan
November 2017
Intermediate to advanced
670 pages
17h 35m
English
Packt Publishing
Content preview from Learning Functional Programming in Go

Design with Duck Typing

As mentioned in the previous chapter, this is known as Duck Typing. It's a powerful design pattern. A thing is defined not by its type hierarchy but by its behaviors.

Here's an example of a File interface from the github.com/couchbase/moss package:

// The File interface is implemented by os.File. App specific// implementations may add concurrency, caching, stats, fuzzing, etc.type File interface {       io.ReaderAt       io.WriterAt       io.Closer       Stat() (os.FileInfo, error)       Sync() error       Truncate(size int64) error}

Here's another example of it from Go's mime/multipart project:

// File is an interface to access the file part of a multipart message.// Its contents may be either stored in memory or on disk.type File interface { io.Reader ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

Learning Functional Programming

Learning Functional Programming

Jack Widman

Publisher Resources

ISBN: 9781787281394Supplemental Content