Skip to main content

Do you support us?

Business address
0x1D24D8f27ea73ff604C7685246bdC6ae55bddaEF

Receiver bind to special type of methods


Welcome, After a long time, I will share next article about advance methods that can increase problem efficiency, very useful . Let's begin this.

Method Value :
     Method Value are special type of methods. These methods don't receive receiver parameter. That why they are special methods. These are generally use in package level api or client defined behaviour. Let study example case i

package main

import (
"fmt"
)

type Op struct{
x int
}

func(o *Op)Add(y int)int{
return o.x +y
}

func main() {
// case i
op := Op{4}  // method value
res := op.Add
fmt.Println(res(4))

//case ii
oprend := &Op{5}   // method expression
add := (*oprend).Add
fmt.Println(add(4))
}

Method Expression:
        Method Expression are similar like to method values, but there is one great difference and is methods take parameter as a receiver, just like old example but you can bind with more than one methods. In method expression (*T).f is an unusual way to write a selector syntax . The above example( case ii) show both method expression but in next code you deeply understand.

type Point struct{ X, Y float64 }
func (p Point) Add(q Point) Point { return Point{p.X + q.X, p.Y + q.Y} }
func (p Point) Sub(q Point) Point { return Point{p.X - q.X, p.Y - q.Y} }
type Path []Point
func (path Path) TranslateBy(offset Point, add bool) {
  var op func(p, q Point) Point
   if add { op = Point.Add }
   else { op = Point.Sub }
   for i := range path {
          // Call either
       path[i].Add(offset)
               //or
       path[i].Sub(offset). path[i] = op(path[i], offset)
 }
}
I hope you enjoy, have a great day.


Comments

Popular posts from this blog

Rosicrucian cipher

In 1513 Cornelius Agrippa introduce early form Rosicrucian Cipher in his books Occult of Philosophy. Geometric and simple substitution cipher are well known ciphers      Pigpen , Freemason, Napoleon and tic tac toe ciphers in which alphabets or symbols arrange in grids.  This is an anagram, "How to reconstruct a data " lets encode the message.       Pigpen cipher , Rosicrucian and Tic tac toe Cipher                      Thank you have a good day.    

Enumerate

Golang provide  own enumerate method which is easy and very powerful. I will show you enumerate with in a sec. When i code enumerate in java, believe me i don't understand why it's used? So i never play from this card at that time, but recently when i start learning go. Now i used where it's used and why? Enumerate basically a counting method. Code   package main import ( " fmt " ) type Weekend int const ( Sunday Weekend = iota Monday Tuesday Wednesday Thursday Friday Saturday ) func main () { fmt. Printf ( " %d " ,Saturday) } If you remember adding color layer then you familiar from this code.  First i create my own type called weekend then used this type.  Iota-generator:   Things that confuse you Sunday Weekend = iota & Monday without value. Before we start Iota-generator first we understand monday without type or value         const ( c = 1 // c : 1 d      // d : 1 ) fmt.Pr

ROT13 community

ROT13 is a member of  substitution cipher class. I had discuss two members of  this class, if you remember.            Atbash cipher           Affine Cipher (shift cipher) If you remember the history which I had share you. Atbash cipher encode message by shifting key = -1 but in inverse direction.           A = Z, B = Y and so on. However in shift cipher key = 3.                 Message : HELLO                                 : JGNNQ Both ciphers are special affine cipher case. As you know shift cipher had introduced by julius caesar in rome. Julius had encoded message by shifting letter 3 time forward, so that it will not understand. However after 2 or 3 decade later it's is easy to decipher. The above example use same technique. In Rot13 alphabets shift by 13 letters.             A = N, B = O and so on.          Let time to solve a riddle:                     Yrg cynl n tnzr. Zl anzr vf Ze K. Zngurzngvpf fbyir ernyvgl ceboyrzf, ohg fpvrapr yngre cebir gur inyvqvg