Go言語の基本機能

リリース: 2023-07-21 11:45:58
転載
817 人が閲覧しました

関数とは何ですか?

#関数は、特定のタスクを実行するコードのブロックです。関数は入力を受け取り、その入力に対していくつかの計算を実行し、出力を生成します。

関数宣言

Go 言語の関数宣言の構文は次のとおりです。

func functionname(parametername type) returntype {
 //function body
}
ログイン後にコピー

関数宣言は func で始まります。キーワードの後に​​関数名が続きます。パラメーターは角括弧 () 内に指定され、その後に関数の戻り値の型が続きます。パラメータを指定する構文は、パラメータ名の後にパラメータ タイプを指定します。次のように、任意の数のパラメータを指定できます:

(parameter1 type, parameter2 type)
ログイン後にコピー

関数の主要部分は中括弧内に配置されます。

パラメータと戻り値はオプションであるため、次の宣言も有効な関数宣言です:

func functionname() {
}
ログイン後にコピー

単純な関数

関数を書いてみましょう。関数の引数は商品の単価と商品の数量で、商品の合計金額を計算して返します。

func calculateBill(price int, no int) int {
    var totalPrice = price * no
    return totalPrice
}
ログイン後にコピー

上記の関数の入力パラメータは、price と no で、どちらも int 型です。この 2 つの積が totalPrice に割り当てられ、戻り値として返されます。totalPrice も int 型です。

連続するパラメータが同じ型の場合、各パラメータの型を指定する必要がなく、最後のパラメータの型を指定するだけで済みます。 (price int、no int など) int ではなく、price として記述することができるため、上記の関数は次のように変更できます。

func calculateBill(price, no int) int {
    var totalPrice = price * no
    return totalPrice
}
ログイン後にコピー

関数を記述したので、この関数を呼び出してみます。関数を呼び出すための構文は functionname(parameters) です。上記の関数は次のように呼び出すことができます:

calculateBill(10, 5)
ログイン後にコピー

次は完成したプログラムです:

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)
}
ログイン後にコピー

Execution [1]

上記のコード出力:

Total price is 540
ログイン後にコピー

多值返回

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)
}
ログイン後にコピー

执行[2]

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

func rectProps(length, width float64)(float64, float64)
ログイン後にコピー

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

上面的代码输出:

Area 60.480000 Perimeter 32.800000
ログイン後にコピー

命名返回值

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

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

func rectProps(length, width float64)(area, perimeter float64) {
    area = length * width
    perimeter = (length + width) * 2
    return //no explicit return value
}
ログイン後にコピー

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)
}
ログイン後にコピー

执行[3]

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

以上がGo言語の基本機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:Go语言进阶学习
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート