Pls explain internals of embedding


import "fmt"


//---------------------
type sun struct{
    i1 int
    i2 int
}

func (s sun)one(){
    
   fmt.Println(s)
   
}
func (s *sun)two(){
   fmt.Println(*s)
    s.i2= 4321
}
//-------------------------
type dal struct{
   
   inter
}

//-------------------------
type inter interface {
    one()
    two()
}
//---------------------------
func main(){
    var z  sun = sun{1,2}
    var x dal = dal{&z}
    x.one()
    x.two()
    x.two()
    x.one()
    fmt.Println(x.one)
    fmt.Println(x.inter.one)
    fmt.Println(z.one)

  
    
}```