In Golang, Structures does not support inheritance but supports composition.
We can define a struct using a keyword struct.
Syntax: type struct_name struct{}
Example:
package main
import "fmt"
type User struct {
name string
age int
}
func main() {
// declare a struct variable
var user1 User
user1.name = "vicky"
user1.age = 22
// declaration and initialization of struct at a same to a struct variable
user2 := User{"tejas", 23}
// you can define a struct address to a varibale while initializing
user3 := &User{"vinu", 23}
fmt.Println("user 1 : "user1)
fmt.Println("user 2 : "user2)
fmt.Println("user 3 : "*user3)
}Output:
user 1 : {vicky 22}
user 2 : {tejas 23}
user 3 : {vinu 23}Anonymous Struct in Golang:
A anonymous struct is a struct with no name. It's useful when you want create a one time useable struct.Example for Anonymous struct:
package main
import "fmt"
func main() {
// struct with no struct name
user1 := struct {
name string
age int
}{"vicky", 22}
// struct with no struct name and no field names
user2 := struct {
string
int
}{"tejas", 23}
fmt.Println("user 1 : ", user1)
fmt.Println("user 2 : ", user2)
}Output:
user 1 : {vicky 22}
user 2 : {tejas 23}Important Note: if we use an Anonymous struct with no field names, same types of variables is not allowed
package main
import "fmt"
func main() {
// struct with no struct name and no field names
s1 := struct {
int
int
}{23, 23}
fmt.Println(s1)
}Output:
./prog.go:9:3: int redeclared
./prog.go:8:3: other declaration of int
./prog.go:10:8: too many values in struct literal of type struct{int}

Comments
Post a Comment