Quiero llamar a la función desde otro archivo en go lang, ¿alguien puede ayudar?
test1.go
package main
func main() {
demo()
}
test2.go
package main
import "fmt"
func main() {
}
func demo() {
fmt.Println("HI")
}
Como llamar demo
en test2
partir test1
?
go fmt
? ¿Como en la terminal o qué? ¿Cómo demuestra que le importa algo?Respuestas:
No puede tener más de uno
main
en su paquete.De manera más general, no puede tener más de una función con un nombre de pila en un paquete.
Quita el
main
intest2.go
y compila la aplicación. Lademo
función será visible desdetest1.go
.fuente
main
en test2.go pero no pude ejecutar test1.go usandogo run test1.go
still. Por qué ?go run test1.go test2.go
Go Lang por defecto construye / ejecuta solo el archivo mencionado. Para vincular todos los archivos, debe especificar el nombre de todos los archivos mientras se ejecuta.
Ejecute cualquiera de los dos comandos siguientes:
Debería hacer algo similar, si quiere construirlos.
fuente
Yo buscaba lo mismo. Para responder a su pregunta " ¿Cómo llamar a la demostración en test2 desde test1? ", Esta es la forma en que lo hice. Ejecute este código con el
go run test1.go
comando. Cambie current_folder a la carpeta donde está test1.go.test1.go
lib \ test2.go
Coloque el archivo test2.go en la subcarpeta
lib
fuente
package lib; expected main
Si solo corres
go run test1.go
y ese archivo tiene una referencia a una función en otro archivo dentro del mismo paquete, se producirá un error porque no le dijo a Go que ejecutara todo el paquete, le dijo que solo ejecutara ese archivo.Puede indicar que go se ejecute como un paquete completo agrupando los archivos como un paquete en la ejecución con comas de varias formas. Aquí hay algunos ejemplos (si su terminal está en el directorio de su paquete):
go run ./
O
go run test1.go test2.go
O
go run *.go
Puede esperar el mismo comportamiento usando el comando de compilación, y después de ejecutar el ejecutable creado se ejecutará como un paquete agrupado, donde los archivos conocen las funciones de los demás, etc. Ejemplo:
go build ./
O
go build test1.go test2.go
O
go build *.go
Y luego, simplemente llamar al ejecutable desde la línea de comando le dará una salida similar a usar el comando de ejecución cuando ejecutó todos los archivos juntos como un paquete completo. Ex:
./test1
O cualquiera que sea el nombre de su archivo ejecutable cuando se creó.
fuente