Go の defer キーワードの機能を理解する
Go を使用する場合、defer キーワードの動作を理解することが重要です。このキーワードを使用すると、開発者は周囲の関数が戻るまで関数の実行を延期できます。ただし、関数の値とパラメーターは defer ステートメントの実行時に評価されることに注意することが重要です。
例: Defer Order の評価
これを説明するには、次のことを考えてください。コード:
package main
import "fmt"
func main() {
defer having()(fun("with Go."))
fmt.Print("some ") // evaluation order: 3
}
func having() func(string) {
fmt.Print("Go ") // evaluation order: 1
return funWithGo
}
func fun(msg string) string {
fmt.Print("have ") // evaluation order: 2
return msg
}
func funWithGo(msg string) {
fmt.Println("fun", msg) // evaluation order: 4
}
この例では、コードは次の順序で実行されます。
延期原則の適用
元のクエリで言及された問題を解決するには、defer キーワードを使用して、チケット価格に基づいたチケット価格を正しく出力します。入力された年齢に応じて。以下はコードの修正バージョンです:
package main
import "fmt"
func main() {
age := 999
defer fmt.Println("Your age is:", getAge(&age)) // defer printing the age
defer fmt.Println("Your ticket price is:", getTicketPrice(age)) // defer printing the ticket price
}
func getTicketPrice(age int) float64 {
// Calculate ticket price based on age
// logic can be customized here
fmt.Println("...order is 2...")
switch {
case age 13 && age この修正されたコードでは、defer キーワードを正しく活用して、それぞれの関数の実行後に年齢とチケット価格が確実に出力されるようにし、最初の問題を解決しています。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3