Go defer
defer in go is used to run a function later on. Specifically, the specified function will run when the enclosing function returns. There’s no clean equivalent to this in Python that I’ve found. The quintessential example is closing a file handle as your program exits. Example package main import ( "fmt" "os" ) func main() { file := createFile("/tmp/testingdefer.txt") defer closeFile(file) writeFile(file) } func createFile(path string) (file *os.File) { fmt.Println("creating file: ", path) file, _ = os.Create(path) // skipping error handling for brevity return } func writeFile(file *os.File) { fmt.Println("writing file") fmt.Fprintln(file, "here is some data for you!") } func closeFile(file *os.File) { fmt.Println("closing file") file.Close() // skipping error handling for brevity }