Hi,
I'm having problem using embed with Go 1.16. I'm getting ether
- //go:embed only allowed in Go files that import "embed"
- or imported and not used: "embed"
The test code is published at
here are the details:
If I remove the "embed" Go import, I'll get:
$ go build
./embeding.go:17:3: //go:embed only allowed in Go files that import "embed"
If I add back the "embed" Go import, I'll get:
$ go build
./embeding.go:11:2: imported and not used: "embed"
$ go version
go version go1.16.6 linux/amd64
$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux bullseye/sid
Release: 10.10
Codename: buster
The main file:
-------------------------------
package main
import (
"embed"
"flag"
"fmt"
"os"
)
//go:embed cpuArch.txt
var cpuArch string
func usage() {
// Fprintf allows us to print to a specifed file handle or stream
fmt.Fprintf(os.Stderr, "\nUsage: %s [flags] file [path ...]\n\n",
"CommandLineFlag") // os.Args[0]
flag.PrintDefaults()
os.Exit(0)
}
func main() {
fmt.Printf("Before parsing the flags\n")
fmt.Printf("CPU: '%s'\n", cpuArch)
flag.StringVar(&cpuArch, "cpu", "AMD64", "CPU Arch")
flag.Usage = usage
flag.Parse()
// There is also a mandatory non-flag arguments
if len(flag.Args()) < 1 {
usage()
}
fmt.Printf("\nAfter parsing the flags\n")
fmt.Printf("CPU: '%s'\n", cpuArch)
}
-------------------------------