Skip to main content

Structs in Golang

A struct in Golang is a user-defined type that allows to combine different types of variables into single type.
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

Popular posts from this blog

Crypto ED25519 Signing and Verifying using Golang

The Edwards-curve Digital Signature Algorithm (ECDSA) is used to create a digital signature using an enhancement of the Schnorr signature with Twisted Edwards curves. Overall it is faster that many other digital signature methods, and is strong for security. One example of ECDSA is Ed25519, and which is based on Curve 25519. It generates a 64-byte signature value of (R,s), and has 32-byte values for the public and the private keys. Example : package main import ( "crypto/ed25519" "crypto/rand" "encoding/hex" "fmt" "log" ) func main() { publickey, privatekey, err := ed25519.GenerateKey(rand.Reader) if err != nil { fmt.Println("cannot generate ecdsa keys") log.Fatal(err) } msg := "hello" signedBytes := ed25519.Sign(privatekey, []byte(msg)) fmt.Println("Signed Message :", hex.EncodeToString(signedBytes)) if !ed25519.Verify(publickey, []byte(msg), signedBytes) { fmt.Println("ver...

Crypto RSA Signing and Verification in Golang

  RSA [Rivest-shamir-Adleman] encryption is one of the most widely used algorithms for secure data encryption. Signing and Verification:   RSA works by generating form of key pair of private and public keys. For Signing:  we need to provide some inputs,  A random reader used for generating random bits because if we provide the same input, it doesn't give the same output as last time. Before signing, we need to hash our message. we also need to provide which hash function is used for message hashing. Finally, private key.  For Verifying: we need to provide some inputs,  hash of our message. which hash function is used for message hashing while signing. Finally, public key and signature what we obtained while signing.  Example: package main import ( "crypto" "crypto/rand" "crypto/rsa" "crypto/sha256" "encoding/hex" "fmt" "log" ) func main() { privatekey, publickey := GenerateRsaKeys() message := ...

Smart contract with remix IDE and Ganache

  Previous Topic:  Simple transaction with ganache using Golang In the Previous topic, we learned how to do transaction with ganache using Golang. Now, we will learn what is smart contract and how to write smart contract and how to deploy it and how to call the contract using remix. To learn what is smart contract, we already write a blog about that. Please feel free to take a look.  Ethereum Smart contract . For beginners, use the Remix IDE for learning smart contract and understand how it works. Then we will use Truffle framework. REMIX:  Remix IDE Link Remix will provide a default workspace for developing smart contract. Now you can able to create a new file and start writing contracts, compile it with solidity compiler and deploy that contract and test the contracts. Simple Smart Contract: First create new file called store.sol  and start writing a simple contract. Contract Functionality: Store a record using SetRecord method. View the latest record . [reco...