>  기사  >  백엔드 개발  >  Go 언어 기능 소개

Go 언어 기능 소개

尚
앞으로
2019-11-30 14:52:232182검색

Go 언어 기능 소개

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제