Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Learn Defining Structs for State | Section
Struct-Oriented Design in Go

bookDefining Structs for State

Swipe to show menu

When building backend systems in Go, you often need to model data that represents real-world entities or application state. The most idiomatic way to do this is by defining structs. A struct is a composite type that groups together fields, each with its own name and type. This enables you to create clear, organized models for your application's data.

Field naming within a struct follows Go's conventions: use CamelCase for field names, and capitalize the first letter if the field should be exported (accessible from other packages). Choose field names that are concise but descriptive. For example, in a backend context, you might define a User struct to represent a user account, with fields such as ID, Name, and Email. This approach keeps your data models clean and self-documenting, which is a hallmark of idiomatic Go style.

main.go

main.go

copy
123456789101112131415161718192021222324
package main import ( "fmt" ) type User struct { ID int Name string Email string } func main() { // Struct literal initialization alice := User{ ID: 1, Name: "Alice", Email: "alice@example.com", } fmt.Println("User ID:", alice.ID) fmt.Println("User Name:", alice.Name) fmt.Println("User Email:", alice.Email) }

To create a new instance of a struct, you can use a struct literal as shown above with the User struct. Each field is initialized by specifying its name and value. If you omit a field, it will be set to its zero value: for numbers, this is 0; for strings, it is the empty string ""; and for pointers, it is nil. You access struct fields using the dot notation, such as alice.Name. This approach makes your code clearer and more maintainable than using unstructured types like maps or slices, especially as your data models grow in complexity.

question mark

Why are structs generally preferred over maps or slices for representing complex state in Go?

Select the correct answer

Everything was clear?

How can we improve it?

Thanks for your feedback!

Sectionย 1. Chapterย 1

Ask AI

expand

Ask AI

ChatGPT

Ask anything or try one of the suggested questions to begin our chat

Sectionย 1. Chapterย 1
some-alt