package main func regularFunctionGoroutine() { go regularFunction(5) } func inlineFunctionGoroutine() { go func(x int) { }(5) } func closureFunctionGoroutine() { n := 3 go func(x int) { n = 7 }(5) print(n) // note: this is racy (but good enough for this test) } func funcGoroutine(fn func(x int)) { go fn(5) } func recoverBuiltinGoroutine() { // This is a no-op. go recover() } func copyBuiltinGoroutine(dst, src []byte) { // This is not run in a goroutine. While this copy operation can indeed take // some time (if there is a lot of data to copy), there is no race-free way // to make use of the result so it's unlikely applications will make use of // it. And doing it this way should be just within the Go specification. go copy(dst, src) } func closeBuiltinGoroutine(ch chan int) { // This builtin is executed directly, not in a goroutine. // The observed behavior is the same. go close(ch) } func regularFunction(x int) type simpleInterface interface { Print(string) } func startInterfaceMethod(itf simpleInterface) { go itf.Print("test") }