Understanding Go: Exploring Structs and Methods

·

3 min read

Understanding Go: Exploring Structs and Methods

Introduction:

Go is a statically typed, compiled programming language that offers a unique approach to object-oriented programming. Unlike languages such as C++ or Java, Go doesn't have traditional classes. Instead, it utilizes structs and methods to achieve similar functionality. In this blog post, we'll delve into a code snippet written in Go and explain how it works, step by step.

Code Explanation:

Let's dissect the provided Go code snippet and understand its various components.

type Person struct {
    Name    string
    Surname string
    Hobbies []string
    id      string
}

func (person *Person) GetFullName() string {
    return fmt.Sprintf("%s %s", person.Name, person.Surname)
}
func main() {
    p := Person{
        Name:    "Mario",
        Surname: "Castro",
        Hobbies: []string{"cycling", "electronics", "planes"},
        id:      "sa3-223-asd",
    }

    fmt.Printf("%s likes %s, %s and %s\n", p.GetFullName(), p.Hobbies[0],
        p.Hobbies[1], p.Hobbies[2])
}

The above example is taken from the book : Go Design Patterns

Defining the Person Struct:

The code begins with the declaration of a struct named Person. A struct is a composite data type that allows you to group together values of different types. In this case, the Person struct has four fields:

Name (string): Represents the person's first name. Surname (string): Represents the person's last name. Hobbies ([]string): Represents a list of hobbies the person has. It is a slice of strings, allowing multiple hobbies to be stored. id (string): Represents a unique identifier for the person.

Creating a Method on the Person Struct:

Next, we define a method named GetFullName() on the Person struct. In Go, a method is associated with a struct by declaring the method with a receiver type. In this case, the receiver type is a pointer to the Person struct (*Person). The purpose of this method is to concatenate the Name and Surname fields of a Person instance and return the full name as a string.

The main() Function:

Moving on to the main() function, we see the following steps:

Creating a Person Instance: We create a new instance of the Person struct named p using a struct literal. The values for the Name, Surname, Hobbies, and id fields are provided.

Calling the GetFullName() Method: Using the instance p, we call the GetFullName() method defined on the Person struct. This is achieved by using the dot notation (p.GetFullName()).

Printing the Result: The fmt.Printf() function is used to print a formatted string. The string includes the full name obtained from p.GetFullName() and the first three hobbies from the Hobbies field.

Output:

The final output of the program is the following string: "Mario Castro likes cycling, electronics, and planes". This demonstrates that the code successfully retrieves the full name and prints it alongside the person's hobbies.

Conclusion:

In conclusion, Go provides an alternative approach to object-oriented programming by utilizing structs and methods. Although Go doesn't have classes like other languages, it allows you to associate methods with structs by defining a receiver type. This code snippet showcases the usage of structs and methods in Go, demonstrating how methods can be called on instances of a struct to perform specific operations. By understanding these concepts, developers can leverage Go's unique approach to build efficient and concise code.


Originally published at programmercave.com


Looking for short-term gigs to boost your income? Look no further! Join TopCoder's Gig platform today! As a talented programmer or freelancer, you have the skills that are in high demand. With TopCoder's Gig, you can find exciting opportunities to work on short projects and earn extra income on the side.

If you are considering enrolling in Scaler Academy and would like a referral and discount on your fees, I can help. As a current Scaler student, I can provide referrals. Please fill out the form at the following link for more information: FORM - Information before Scaler Academy Referral

Are you passionate about development and want to find a job that utilizes your skills? Check out Geektrust for resources and opportunities in the field of development


Buy Me A Coffee