首頁  >  文章  >  後端開發  >  如何有效率地引用Go的fmt.Sprintf中的參數?

如何有效率地引用Go的fmt.Sprintf中的參數?

DDD
DDD原創
2024-11-07 16:40:03809瀏覽

How Can I Efficiently Reference Parameters in Go's fmt.Sprintf?

高效引用fmt.Sprintf 中的參數

要使用fmt.Sprintf 準確格式化Go 中的字串,了解參數如何映射到格式化動詞。預設情況下,每個動詞都會格式化下一個可用參數,從而建立順序關係。

但是,您可以透過使用明確參數索引來克服多次傳遞相同參數的需要。在格式化動詞前面加上 [n],其中 n 表示要格式化的參數的單一索引位置。

此技術在 getTableCreationCommands 等函數中特別有用。您可以將變數v 傳遞一次並在fmt.Sprintf 字串中引用它,而不是四次傳遞變數v,如下所示:

return fmt.Sprintf(`
    CREATE TABLE share_%[1]v PARTITION OF share FOR VALUES IN (%[1]v);
    CREATE TABLE nearby_%[1]v PARTITION OF nearby FOR VALUES IN (%[1]v);
`, s)

在此範例中,我們傳遞字串s 一次並使用參數索引[ 1] 在格式化字串中引用它。這種方法簡化了格式化過程,減少了程式碼重複,並增強了可維護性。

這是一個完整的範例:

package main

import "fmt"

func getTableCreationCommands(s string) string {
    return fmt.Sprintf(`
        CREATE TABLE share_%[1]v PARTITION OF share FOR VALUES IN (%[1]v);
        CREATE TABLE nearby_%[1]v PARTITION OF nearby FOR VALUES IN (%[1]v);
    `, s)
}

func main() {
    fmt.Println(getTableCreationCommands("X"))
}

輸出:

CREATE TABLE share_X PARTITION OF share FOR VALUES IN (X);
CREATE TABLE nearby_X PARTITION OF nearby FOR VALUES IN (X);

以上是如何有效率地引用Go的fmt.Sprintf中的參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn