Go 함수와 다른 언어의 차이점
1. 함수 형식이 다릅니다
func GetMsg(i int) (r string) { fmt.Println(i) r = "hi" return r }
func는 이것이 함수임을 나타냅니다.
GetMsg는 함수 이름입니다
(i int) 함수는 int 매개변수
(r string) 이 함수는 문자열 형식의 반환값을 반환합니다
2. 이 함수는 여러 개의 반환값을 반환할 수 있습니다
이것은 c와 php와 다르지만 lua
func GetMsg(i int) (r string, err string) { fmt.Println(i) r = "hi" err = "no err" return r,err }
3와 같습니다. . defer 사용
defer는 "함수가 종료될 때 호출됨"을 의미합니다. 특히 파일을 읽고 쓸 때는 닫기 작업에 defer를 사용해야 합니다.
func ReadFile(filePath string)(){ file.Open(filePath) defer file.Close() if true { file.Read() } else { return false } }
이것은 다음을 의미합니다. file.Open 직후에 close를 호출합니다. false를 반환하면 file.Close()를 호출합니다. 이렇게 하면 C 언어의 메모리 누수 문제를 효과적으로 방지할 수 있습니다.
4. 이해하기 어려움: 패닉, 복구 및 지연
defer: 권장: go defer(go 지연 기능) 소개
Panic 및 Recover는 다른 언어에서는 throw 및 복구로 간주됩니다.
다음 예:
ackage main import "fmt" func main() { f() fmt.Println("Returned normally from f.") } func f() { defer func() { if r := recover(); r != nil { fmt.Println("Recovered in f", r) } }() fmt.Println("Calling g.") g(0) fmt.Println("Returned normally from g.") } func g(i int) { if i > 3 { fmt.Println("Panicking!") panic(fmt.Sprintf("%v", i)) } defer fmt.Println("Defer in g", i) fmt.Println("Printing in g", i) g(i + 1) }
반환:
Calling g. Printing in g 0 Printing in g 1 Printing in g 2 Printing in g 3 Panicking! Defer in g 3 Defer in g 2 Defer in g 1 Defer in g 0 Recovered in f 4 Returned normally from f.
Panic은 메시지를 던지고 함수에서 빠져나옵니다. Recover는 정보를 수신하고 처리를 계속합니다.
추천: 언어 튜토리얼로 이동
위 내용은 Go 언어 기능 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!