Heim > Backend-Entwicklung > Golang > Go-Sprachgrundlagen-Funktion

Go-Sprachgrundlagen-Funktion

Freigeben: 2023-07-21 11:45:58
nach vorne
849 Leute haben es durchsucht

Was ist eine Funktion?

Funktionen sind Codeblöcke, die bestimmte Aufgaben ausführen. Eine Funktion nimmt Eingaben entgegen, führt einige Berechnungen mit der Eingabe durch und erzeugt eine Ausgabe.

Funktionsdeklaration

Die Syntax der Go-Sprachfunktionsdeklaration lautet wie folgt:

func functionname(parametername type) returntype {
 //function body
}
Nach dem Login kopieren

Die Funktionsdeklaration beginnt mit dem Schlüsselwort func, gefolgt vom Funktionsnamen. Parameter werden in eckigen Klammern () angegeben, gefolgt vom Rückgabetyp der Funktion. Die Syntax zum Angeben von Parametern besteht aus dem Parameternamen, gefolgt vom Parametertyp. Sie können eine beliebige Anzahl von Parametern angeben, wie folgt:

(parameter1 type, parameter2 type)
Nach dem Login kopieren

Der Hauptteil der Funktion steht in geschweiften Klammern.

Parameter und Rückgabewerte sind optional, daher ist die folgende Deklarationsmethode auch eine gültige Funktionsdeklaration:

func functionname() {
}
Nach dem Login kopieren

Einfache Funktion

Lassen Sie uns eine Funktion schreiben, deren Parameter der Stückpreis des Produkts und die Menge sind des Produkts, um den Gesamtpreis des Produkts zu berechnen und es zurückzusenden.

func calculateBill(price int, no int) int {
    var totalPrice = price * no
    return totalPrice
}
Nach dem Login kopieren

Die Eingabeparameter der obigen Funktion sind „price“ und „no“, beide vom Typ „int“. Das Produkt der beiden wird „totalPrice“ zugewiesen und als Rückgabewert „totalPrice“ ebenfalls vom Typ „int“ zurückgegeben.

Wenn aufeinanderfolgende Parameter vom gleichen Typ sind, können wir die Angabe des Typs für jeden Parameter vermeiden und müssen nur den Typ des letzten Parameters angeben. Beispielsweise kann „price int“ als „price“ und „no int“ geschrieben werden , also kann die obige Funktion wie folgt geändert werden:

func calculateBill(price, no int) int {
    var totalPrice = price * no
    return totalPrice
}
Nach dem Login kopieren

Nachdem wir nun eine Funktion geschrieben haben, versuchen wir, diese Funktion aufzurufen. Die Syntax zum Aufrufen einer Funktion lautet Funktionsname (Parameter). Die obige Funktion kann wie folgt aufgerufen werden:

calculateBill(10, 5)
Nach dem Login kopieren

Das Folgende ist das fertige Programm:

package main

import (
    "fmt"
)

func calculateBill(price, no int) int {
    var totalPrice = price * no
    return totalPrice
}

func main() {
    price, no := 90, 6
    totalPrice := calculateBill(price, no)
    fmt.Println("Total price is", totalPrice)
}
Nach dem Login kopieren

Ausführung[1]

Die obige Codeausgabe:

Total price is 540
Nach dem Login kopieren

多值返回

Go 语言是允许函数返回多个值的。我们来写一个 rectProps() 函数,该函数的参数是长方形的 length 和 width,返回长方形的 area(面积) 和 perimeter(周长)。

package main

import (
    "fmt"
)

func rectProps(length, width float64)(float64, float64) {
    var area = length * width
    var perimeter = (length + width) * 2
    return area, perimeter
}

func main() {
     area, perimeter := rectProps(10.8, 5.6)
    fmt.Printf("Area %f Perimeter %f", area, perimeter)
}
Nach dem Login kopieren

执行[2]

如果一个函数返回多个值则需要使用 () 指定,比如:

func rectProps(length, width float64)(float64, float64)
Nach dem Login kopieren

该函数有两个 float64 参数 length 和 width,也返回两个 float64 类型的值。

上面的代码输出:

Area 60.480000 Perimeter 32.800000
Nach dem Login kopieren

命名返回值

可以从函数返回命名值。如果返回值被命名,则可以认为它在函数的第一行被声明为变量,并初始化为相应类型的零值。

上面的 rectProps() 函数可以使用命名的返回值重写:

func rectProps(length, width float64)(area, perimeter float64) {
    area = length * width
    perimeter = (length + width) * 2
    return //no explicit return value
}
Nach dem Login kopieren

area 和 perimeter 是函数中命名的返回值。

需要注意的是,函数里的 return 语句没有返回任何值。由于在函数声明中将 area 和 perimeter 指定为返回值,因此当遇到 return 语句时,它们会自动从函数中返回。

空白符

Go 语言里面,下划线 _ 可以被当做空白符使用。它可以用来代替任何类型的任何值,让我们看看这个空白标识符有什么用。

rectProps() 函数返回长方形的面积和周长。如果我们只想要面积,而不想要周长那该怎么办呢?这时候空百符 _ 就可以派上用场了。

package main

import (
    "fmt"
)

func rectProps(length, width float64) (float64, float64) {
    var area = length * width
    var perimeter = (length + width) * 2
    return area, perimeter
}
func main() {
    area, _ := rectProps(10.8, 5.6) // perimeter is discarded
    fmt.Printf("Area %f ", area)
}
Nach dem Login kopieren

执行[3]

上面代码的第 13 行,我们接收了函数返回的 area,并使用 _ 忽略了 perimeter。

Das obige ist der detaillierte Inhalt vonGo-Sprachgrundlagen-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:Go语言进阶学习
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage