tldr: go build only produces an executable for main packages. Check the package name of your main file is main.
I am an idiot. Its only through mistakes that you learn tho. I have recently been running into issues with my new golang projects. ONLY the new ones. Whenever I try to make a new project, it would always have issues. The biggest issue is the fact that "go build" would not produce an executable without "-o main.exe" as arguments. When an executable was produced, if I ran it I got
$ ./main.exe
./main.exe: line 1: syntax error near unexpected token \`newline\'
./main.exe: line 1: \`!<arch>\'
I thought that this was something wrong with my install. Possibly my environmental varaibles. The fact that it was only new projects should have directed me more to how the project was set up. Digging through said vairables proved not to help. Eventually I poked arround the go irc, (far and away the best place to go for help I'd actually go to the golang discord nowadays, but thats personal preference), and finally someone (Thank you neebs) was able to catch what I was doing wrong.
It had been so long since I last created a project, and I had only ever created one mod project from scratch, that I was confusing the errors that I got, and I kept trying to compile the following to an executable.
package lab5
import "fmt"
func main(){
fmt.Println("Hello World")
}
The issue at hand is the package name. go build only produces an executable for main packages. IE "package main" with a func main().
package main
import "fmt"
func main(){
fmt.Println("Hello World")
}
Not a mistake I will make again I think.
@naddika Assuming you arent dealing with go plugins, with go build, you dont. Go build is not designed to operate like that.
As I summarized in the tldr at the top, and the second to last line & code block, you rename the package you are attempting to use as your entry-point to
main
, and make sure it has amain
function akin to this.