What Are Structs in Golang?

Yes, you got that part right. Structs are short for structures. In this blog, we will understand the role of structs in Golang. In simple words, the idea behind structure is to keep things together. Golang helps us to create types that have their own custom behavior. Now why would we need that? Well, sometimes the current types that are provided to us are not sufficient. Developers wish to combine and use the types to create their own type.
So, let us get started!
Creating First Struct
- If you refer to the program below, you will see that we have created a ‘type User struct’ and ‘type Product struct’. Here, the struct defines that it is a custom type.
- Now, we have to list the fields that we wish to be a part of ‘User’ struct and ‘Product’ struct. Let us assume that we take nine fields in the ‘User’ struct, namely
ID uint64
First_name string
Last_name string
Password string
Email string
Phone string
Token string
Refresh_Token string
User_ID string
So, ‘User’ will store ID, First_name, Last_name, Password, Email, Phone, Token, Refresh_Token, User_ID values whenever we create a single ‘User’
Similarly, we include the fields in the ‘Product’ struct
Product_ID uint64
Product_Name string
Price uint64
Rating uint8
Image string
And in similar fashion, ‘Product’ will store Product_ID, Product_Name, Price, Rating, Image wherever we create one ‘Product’.

- Now, in the function main (), we have to define what makes up
When we type ‘var x User’, we have to insert the parameters.
As you can see, we have inserted 4321, “David”, “Malyan”, “tygrte%!ty”, “abc@gmail.com, “5432167898”, “1ayt”, “yes”, “D4321” to define ‘User’
Similarly, we have inserted 786542, “Guitar”, 3200, 9, “yes” to define ‘Product’
- Finally, we print out x.Phone and y.Product_ID, which should give us results 5432167898 and 786542
- As we run the program in the terminal, we get to see ‘5432167898’ and ‘786542’ as the result. So, the struct has been successfully created.
Alternative Way to Define Custom Type
- There is another way to define User and Product (the process known as literal). For that, you should take a look at the program below.

- In order to assign values in x, we write it as x := User {ID: 4321, First_Name: “David, Last_Name: “Malyan”, Password: “tygrte%!ty, Email: “abc@gmail.com”, Phone: “5432167898”}
Here, we provide only value for every element in x except for Token, Refresh_Token, User_ID. In the case of y, we provide values for Product_ID, Product_Name, Price. Since, we do not assign any value for int uint8 type Rating, it should ideally display default value, i.e, 0, in place of Rating, during runtime.
- So, we run the program in the terminal and the output is as expected.

Hopefully, you have understood the concept. In order to get a grasp of it, perform coding on VS Code or any other IDE and see the result for yourself.

I have been working as a content writer for four years, after I graduated in 2018 with a B.Tech in Electronics and Telecommunication. Learning about programming languages and technologies is a passion for me. Apart from programming, I like to play guitar in my leisure time.