# project layout

Published articles for project layout.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Ultimate Go: Advanced Engineering Episode 9

DevFeed: [Ultimate Go: Advanced Engineering Episode 9](<https://devfeed.tech/articles/ultimate-go-advanced-engineering-episode-9-22195.md>)

Original publisher: [Read original article](<https://www.ardanlabs.com/blog/2022/12/ultimate-go-advanced-engineering-episode-9.html>)

Published: 2022-12-20T00:00:00Z

Content type: tutorial

Language: en

Sources: [William Kennedy](<https://devfeed.tech/sources/william-kennedy.md>)

Topics: [Blockchain](<https://devfeed.tech/topics/blockchain.md>), [Go Language](<https://devfeed.tech/topics/go-language.md>), [Bitcoin](<https://devfeed.tech/topics/bitcoin.md>), [Ethereum](<https://devfeed.tech/topics/ethereum.md>)

Tags: [bitcoin](<https://devfeed.tech/tags/bitcoin.md>), [blockchain](<https://devfeed.tech/tags/blockchain.md>), [blockchain-asset](<https://devfeed.tech/tags/blockchain-asset.md>), [build](<https://devfeed.tech/tags/build.md>), [building](<https://devfeed.tech/tags/building.md>), [code](<https://devfeed.tech/tags/code.md>), [concepts](<https://devfeed.tech/tags/concepts.md>), [engineering](<https://devfeed.tech/tags/engineering.md>), [ethereum](<https://devfeed.tech/tags/ethereum.md>), [genesis](<https://devfeed.tech/tags/genesis.md>), [genesis-json](<https://devfeed.tech/tags/genesis-json.md>), [genesis-record](<https://devfeed.tech/tags/genesis-record.md>), [go](<https://devfeed.tech/tags/go.md>), [go-blockchain](<https://devfeed.tech/tags/go-blockchain.md>), [implement](<https://devfeed.tech/tags/implement.md>), [introduction](<https://devfeed.tech/tags/introduction.md>), [project](<https://devfeed.tech/tags/project.md>), [project-layout](<https://devfeed.tech/tags/project-layout.md>), [reuse](<https://devfeed.tech/tags/reuse.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>)

### AI overview

This video tutorial covers the initial layout of a blockchain project in Go, including creating a genesis record and explaining its role. It also introduces fundamental blockchain verifications.

### Source excerpt

Introduction In episode 8, Bill wanted to build a blockchain in Go and began to lay the groundwork for the project. Go is a good choice because its standard library has the necessary network and cryptographical functionality required to build a blockchain. Unlike the previous segment, Bill plans to use this blockchain to manage accounts and balances with hypothetical assets. Bill will reuse concepts from ethereum, bitcoin and the previous segment of the series to implement this blockchain.

## Use internal packages to reduce your public API surface

DevFeed: [Use internal packages to reduce your public API surface](<https://devfeed.tech/articles/use-internal-packages-to-reduce-your-public-api-surface-20820.md>)

Original publisher: [Read original article](<https://dave.cheney.net/2019/10/06/use-internal-packages-to-reduce-your-public-api-surface>)

Author: Dave Cheney

Published: 2019-10-06T04:43:54Z

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>), [Tool](<https://devfeed.tech/topics/tool.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [go](<https://devfeed.tech/tags/go.md>), [library](<https://devfeed.tech/tags/library.md>), [pkg](<https://devfeed.tech/tags/pkg.md>), [programming](<https://devfeed.tech/tags/programming.md>), [project-layout](<https://devfeed.tech/tags/project-layout.md>)

### AI overview

This article explains how Go internal packages restrict imports to a defined directory tree, helping project authors keep implementation details out of the public API. Packages can later be promoted if the author chooses to support them publicly.

### Source excerpt

In the beginning, before the go tool, before Go 1.0, the Go distribution stored the standard library in a subdirectory called pkg/ and the commands which built upon it in cmd/. This wasn't so much a deliberate taxonomy but a by product of the original make based build system. In September 2014, the Go distribution [...]