All files in the same directory belong to the same package, main in the case of an executable. You only need to import packages, not files. The How to Write Go Code article should clarify it.
A Go “package” is a directory of files. All files in a given directory belong to the same package. If you are building a command line tool called firstApp then every file in that directory should start with package main. If you are building a package in a directory foo/bar then every file in there should start with package bar. This is actually explained rather well in the article I linked.
So you mean all .go files in my firstApp directory should have package main declared at the top, even if I’m only referencing the functions in there (and not running them individually.)
Package names
The first statement in a Go source file must be package name
where name is the package’s default name for imports. (All files in a package must use the same name.)
I recognize the problems OP had with files and packages. It’s the same I had when I started to work with Go. I like Go, and many concepts are easy, but some are hard and unexplained due to unclear documentation and books. For example, I’m able to create well written Go programs, but I never use interfaces. No book or documentation text has ever been able to make clear to me why and when to use them. And that frustrates when finding a solution for a simple problem like reading lines from a text file. For that you need to know that *os.File and io.Writer are compatible, and that that might have something to do with interfaces.