Go Programming Language Struct Methods

Go Programming Language Struct Methods

In Go programming, we can also define methods in defined struct object by passing struct object to the method.

Go Struct Methods Example

package main

import (
	"fmt"
	"time"
)

//define a struct 'Student'
type Student struct {
	id int
	name string
	grade int
	mark1 float32
	mark2 float32
	created time.Time
}

func (s Student) show() {
	// displays student details                                            	 
	fmt.Println("----------------")                                        	 
	fmt.Printf("Id: %d\n", s.id)                                    	 
	fmt.Printf("Name: %s\n", s.name)                                	 
	fmt.Printf("Grade: %d\n", s.grade)                              	 
	fmt.Printf("Mark1: %.2f\n", s.mark1)
	fmt.Printf("Mark2: %.2f\n", s.mark2)
	fmt.Printf("Created: %s\n", s.created.String())
}

// Methods to calculate total marks using struct instance
func (s Student) totalMarks() float32 {
	return (s.mark1 + s.mark2)
}

func (s Student) updateMarks(newMark1, newMark2 float32) {
	s.mark1 = newMark1
	s.mark2 = newMark2
}

func main() {
	var student1 Student

	// setting values
	student1.id = 1
	student1.name = "Student1"
	student1.grade = 10
	student1.mark1 = 76
	student1.mark2 = 82
	student1.created = time.Now()

	// displays student details
	fmt.Println("Student Details")
	student1.show()
	fmt.Printf("Total Marks: %.2f\n", student1.totalMarks())
	// updates student1 marks
	student1.updateMarks(86, 91)

	// displays student details                   	 
	fmt.Println("Student Details")                    	 
	student1.show()                                                        	 
	fmt.Printf("Total Marks: %.2f\n", student1.totalMarks())

}
Output:
$ go build structs.go
$ ./structs
Student Details
----------------
Id: 1
Name: Student1
Grade: 10
Mark1: 76.00
Mark2: 82.00
Created: 2018-07-25 22:25:48.616170275 +0530 IST
Total Marks: 158.00
Student Details
----------------
Id: 1
Name: Student1
Grade: 10
Mark1: 76.00
Mark2: 82.00
Created: 2018-07-25 22:25:48.616170275 +0530 IST
Total Marks: 158.00