gogen
gogen copied to clipboard
import alias in generated multi-file packages
When I create a package with two files, both importing 'fmt', the second file uses an alias for the import. Is this expected
file1.go
package mypackage
import "fmt"
func Func1() {
fmt.Println("Hello from file1")
}
file2.go
package mypackage
import fmt1 "fmt"
func Func2() {
fmt1.Println("Hello from file2")
}
source code
package main
import (
"os"
"path/filepath"
"github.com/goplus/gogen"
)
func main() {
pkg := gogen.NewPackage("", "mypackage", nil)
fmt := pkg.Import("fmt")
pkg.SetCurFile("file1", true)
pkg.NewFunc(nil, "Func1", nil, nil, false).BodyStart(pkg).
Val(fmt.Ref("Println")).Val("Hello from file1").Call(1).EndStmt().
End()
ToTempFolder(pkg, "file1")
pkg.SetCurFile("file2", true)
pkg.NewFunc(nil, "Func2", nil, nil, false).BodyStart(pkg).
Val(fmt.Ref("Println")).Val("Hello from file2").Call(1).EndStmt().
End()
ToTempFolder(pkg, "file2")
}
func ToTempFolder(pkg *gogen.Package, fname string) {
resultDir := "result"
err := os.MkdirAll(resultDir, 0755)
if err != nil {
panic(err)
}
outputPath := filepath.Join(resultDir, fname+".go")
outfile, err := os.Create(outputPath)
if err != nil {
panic(err)
}
defer outfile.Close()
err = pkg.WriteTo(outfile, fname)
if err != nil {
panic(err)
}
}