ここに2つのファイルからなるGoのプログラムがあります。 文法的には問題はなくビルドできるコードですが、実行すると何が起こるでしょうか。 Goのバージョンとともに答えてください。

package main

import (
        "./sub"
        "fmt"
)

type T struct {
        sub.T
}

func (T) f() {
        fmt.Println("main.T.f()")
}

func main() {
        s := sub.New(T{})
        s.F()
}
package sub

type I interface {
        f()
}

type T struct {
        I
}

func New(i I) T {
        return T{i}
}

func (t T) F() {
        t.f()
}

答えはまた後日。