ホームページ >バックエンド開発 >Golang >golang 関数名は名前の競合をどのように処理しますか?

golang 関数名は名前の競合をどのように処理しますか?

王林
王林オリジナル
2024-04-23 09:00:02506ブラウズ

Go の関数名は、同じパッケージ内で一意である必要があります。名前の競合が発生した場合は、次の方法で処理できます。 修飾名を使用します。パッケージ名と関数名で構成されます。たとえば、 package main; func PrintHello(); !") } エイリアスを使用する: package main; import f "fmt"; func PrintHello() { f.Println("Hello!") } ネストされた関数を使用する: で同じ関数名を使用します。内部関数: package main ; func main() { printHello := func() { fmt.Println("Hello!") }

golang 函数名称如何处理命名冲突?

Go の関数名 名前の競合の処理

Go 言語では、関数名は同じパッケージ内で一意である必要があります。名前の競合が発生すると、Go コンパイラーはエラーを報告します。関数名の競合を処理するための戦略をいくつか示します。

1. 修飾名を使用する

名前の競合は、修飾名を使用することで解決できます。修飾名は、パッケージ名と関数名で構成されます (例:

package main

import "fmt"

func PrintHello() {
    fmt.Println("Hello!")
}

2)。 エイリアスを使用する

パッケージをインポートするときに、エイリアスを使用して名前の競合を解決できます。 。例:

package main

import f "fmt"

func PrintHello() {
    f.Println("Hello!")
}

3. ネストされた関数の使用

は、内部関数で関数名を再利用できます。例:

package main

func main() {
    printHello := func() {
        fmt.Println("Hello!")
    }

    printHello()
}

実用的なケース

pkg1pkg2 という 2 つのパッケージがあり、どちらにも Function が含まれているとします。同じ名前の Print

pkg1/print.go

package pkg1

func Print() {
    fmt.Println("Print from pkg1")
}

pkg2/print.go

package pkg2

func Print() {
    fmt.Println("Print from pkg2")
}

名前の競合を解決するには、次のようにします。次のいずれかの戦略:

  • 修飾名を使用する:
package main

import (
    "pkg1"
    "pkg2"
)

func main() {
    pkg1.Print()
    pkg2.Print()
}
  • 別名を使用する:
package main

import (
    p1 "pkg1"
    p2 "pkg2"
)

func main() {
    p1.Print()
    p2.Print()
}
  • ネストされた関数を使用する:
package main

import (
    "pkg1"
    "pkg2"
)

var (
    p1Print = pkg1.Print
    p2Print = pkg2.Print
)

func main() {
    p1Print()
    p2Print()
}

上記の戦略は、Go での関数名の名前の競合を効果的に処理できます。どの戦略を選択するかは、特定の状況によって異なります。

以上がgolang 関数名は名前の競合をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。