A Tour of Go をやる! – その4 「Exported names」見えますか? 【Go言語/A Tour of Go】
2018年8月30日GoA Tour of Go,Goのお勉強,Go言語Go,Goのお勉強,Go言語

「A Tour of Go をやる!」シリーズの第4回目。
何時も通り「A Tour of Go」を進めます。
今回の内容は「Exported names」です。
お題は「Exported names(エクスポートネーム)」
こちらが該当ページ。
んでは詳しく見ていきます。
「Exported names」とは?
そもそものお話ですが、「Exported names」とは何だ?からですね。
お題ページには次の説明が書かれています。
Goでは、最初の文字が大文字で始まる名前は、外部のパッケージから参照できるエクスポート(公開)された名前( exported name )です。 例えば、 Pi は math パッケージでエクスポートされています。
https://go-tour-jp.appspot.com/basics/3
つまりこうですね。

小文字で宣言されたファンクションは、他所のパッケージから見えない。
先頭大文字で定義されたファンクションは、他所のパッケージから見える。
これを踏まえてサンプルプログラムを見てみましょうか。
サンプルプログラムを見る
関連箇所にコメントを入れたものです。
さて、実行してみると気づくと思いますが、このプログラムはエラーになります。
./prog.go:11:15: cannot refer to unexported name math.pi
(エクスポートされていない名前math.piを参照できません)
math.pi がエクスポートされていないよっ、というエラーです。
まぁ…、エクスポートされてないというか、外部パッケージのファンクションを参照するルールを守ってないんですね。
他所のパッケージ(main)からファンクション(math.Pi)を見るためには、先頭大文字がルール。
というわけでプログラムを修正してみます。
今度は円周率が表示されました。
今度は正しく math.Pi (円周率を求めるファンクション) が動いたようですね。
さいごに
今回はパッケージ間におけるファンクションの参照可否のお話でした。
これはよくスコープ(範囲)と言われるものですね。
ファンクションのスコープ、変数のスコープ、など、見せる範囲といった意味でよく使われます。
別の言語では、パブリック(public)やプライベート(private)などと言ったりもします。
なんでこんな概念があるのかというと…
例えば、自分のパッケージ内だけで必要な処理や変数などを隠したりする為ですね。
そんなところで、また次回。٩( 'ω’ )و
「Go言語のお勉強」インデックス
- うっしー「Go言語」に手を出す…(準備編)
- 「A Tour of Go」をやる!
- その1 「Hello, 世界」
- その2 「Packages」だってさ~
- その3 「Imports」いんぽーっ!
- その4 「Exported names」見えますか?
- その5 「Functions」 これは機能です。
- その6 「Functions continued」(?) 型しょ~略っ!
- その7 「Multiple results」 一粒で二度美味しい?
- その8 「Named return values」 お前は戻り値だ…
- その9 「Variables」入れ物!
- その10 「Variables with initializers」砂でも詰めるか…
- その11 「Short variable declarations」 略パート2!
- その12 「Basic types」 型抜きってあったな…
- その13 「Zero values」 生まれ持った中身は?
- その14 「Type conversions」 1は1.0になれる!
- その15 「Type inference」 君の型は…?
- その16 「Constants」 変えられねぇよ?
- その17 「Numeric Constants」 型無し野郎?
- その18 「For」 ~いよいよループ!~
- その19 「For continued」 ~ Forの続き! ~
「A Tour of Go」を題材にした記事は現在書き直し中…。_(:3」∠)_
ほとんどサボりが原因で尻切れとなっていたシリーズですが、最近になってようやく続きを書きたくなり再開をしようと思ったんです。が、古い記事を見返すとデータ・フォーマットが古かったり内容が分かり難かったりに気づきまして、、、この際だからと最初の記事から書き直しをすることになりました…
関連記事

A Tour of Go をやる! – その10 「Variables with initializers」砂でも詰めるか… 【Go言語/A Tour of Go】
「A Tour of Go をやる!」シリーズの第10回目。 二桁回到達… ! ...

A Tour of Go をやる! – その9 「Variables」入れ物! 【Go言語/A Tour of Go】
「A Tour of Go をやる!」シリーズの第9回目。 二桁回目前… 今回か ...

VSCode で Go言語 を触るときによく使う操作や拡張機能なんかの備忘録
記事ヘッダー_VSCodeでGo言語! 今回は、VSCode(Visual St ...

A Tour of Go をやる! – その11 「Short variable declarations」 略パート2! 【Go言語/A Tour of Go】
「A Tour of Go をやる!」シリーズの第11回目。 3連続の変数回。今 ...

A Tour of Go をやる! – その3 「Imports」いんぽーっ! 【Go言語/A Tour of Go】
「A Tour of Go をやる!」シリーズの第3回目。 今回も「A Tour ...
ディスカッション
コメント一覧
まだ、コメントがありません