2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[golang]プライベート関数の定義方法

Posted at

これはなに

この記事では、Goにおけるパッケージ内でプライベートな関数を定義する方法について説明します。Go言語では、関数名を小文字で始めることで、その関数をプライベートにし、パッケージの外部からのアクセスを防ぐことができます。これにより、パッケージ内部の実装を隠蔽し、安全性やカプセル化を高めることができます。

対象読者

  • Go言語を使ってプログラムを開発しているエンジニア
  • Goでの関数の可視性について学びたい初心者
  • パッケージ設計やセキュリティに興味があるプログラマ

ゴール

  • Goにおけるプライベート関数の定義方法を理解する
  • プライベート関数とパブリック関数の違いを明確にする
  • パッケージ内での関数のアクセス制御の方法を学ぶ

TL;DR

  • 関数名を小文字で始めると、Goではその関数がプライベートになり、パッケージ外からはアクセスできなくなります
  • 関数名を大文字で始めると、その関数はパッケージ外からもアクセス可能なパブリック関数になります

プライベート関数の定義方法

プライベートな関数の定義

プライベートな関数は、次のように関数名を小文字で始めて定義します。

package mypackage

import "fmt"

// プライベート関数
func privateFunction() {
    fmt.Println("This is a private function")
}

// パブリック関数
func PublicFunction() {
    fmt.Println("This is a public function")
    privateFunction() // 同じパッケージ内でプライベート関数を呼び出す
}

使用例

次に、パッケージ内でプライベートな関数を定義し、それを使用する例を示します。

ファイル構成

mypackage/
  └── mypackage.go
main.go

mypackage/mypackage.go

package mypackage

import "fmt"

// プライベート関数
func privateFunction() {
    fmt.Println("This is a private function")
}

// パブリック関数
func PublicFunction() {
    fmt.Println("This is a public function")
    privateFunction() // 同じパッケージ内でプライベート関数を呼び出す
}

main.go

package main

import "mypackage"

func main() {
    mypackage.PublicFunction() // パブリック関数の呼び出しは可能
    // mypackage.privateFunction() // エラー: プライベート関数は他のパッケージから呼び出せない
}

実行結果

This is a public function
This is a private function

説明

mypackage.go

  • privateFunctionは小文字で始まるため、この関数はmypackageパッケージ内からのみアクセス可能です
  • PublicFunctionは大文字で始まるため、この関数は他のパッケージからもアクセス可能です
  • PublicFunction内でprivateFunctionを呼び出しています

main.go

  • mypackage.PublicFunction()を呼び出すことができますが、mypackage.privateFunction()を直接呼び出そうとするとエラーになります。プライベート関数は他のパッケージからアクセスできないためです

このように、関数名を小文字で始めることで、その関数をプライベートにしてパッケージの外部からのアクセスを防ぐことができます。

参考文献

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?