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.
Been coding Go for almost two years now and this stumped me tonight. I was trying to build a binary for a native OpenWhisk action and forgot that I had previously deployed my code to Google Cloud Functions, so my main function was in a package that wasn't called "main". Thanks for being the top Google result lol.