Wir haben ein Go-Paket entwickelt, das von vielen von uns verwendet wird.Wie unbenutzten Code zur Kompilierzeit entfernen?
Es wird mit der Standardmethode import ("package-name")
importiert.
Zur Kompilierungszeit enden alle unsere Dienstprogramme, einschließlich der sehr kleinen, als sehr große Binärdateien.
Wir haben alle Zeichenfolgen in den Dienstprogrammen extrahiert und festgestellt, dass das gesamte Paket in jedes Dienstprogramm kompiliert wird. Einschließlich Funktionen, die von diesen Dienstprogrammen nicht verwendet werden.
EDIT 1:
Vielen Dank an die Menschen, die auf diese Frage reagieren.
Hier ist, was wir sehen:
main.go
package main
import "play/subplay"
func main() {
subplay.A()
}
play/subplay.go
package subplay
func A() {
fmt.Printf("this is function A()")
}
func B() {
fmt.Printf("secret string")
}
Funktion B() nie aufgerufen. Nach dem Erstellen der Binärdatei finden wir jedoch die Zeichenfolge "secret string" in der Datei "main.exe".
Wie können wir unbenutzten Code aus Go-Programmen zur Kompilierzeit entfernen?
Welche Version von Go verwenden Sie? Weil '' secret string "' ** nicht ** in der ausführbaren Datei für mich erscheint, wenn 'subplay.B()' nicht aufgerufen wird (Go 1.8, sowohl für Linux als auch für Windows)! – icza