「Go」の版間の差分
Semi-Brace (トーク | 投稿記録) M 分割 |
Semi-Brace (トーク | 投稿記録) M →目次 |
||
25 行 | 25 行 | ||
;その他 |
;その他 |
||
* [[Go/並列処理|並列処理]] |
* [[Go/並列処理|並列処理]] |
||
* [[Go/ |
* [[Go/HTTP|HTTP]] |
||
* [[Go/ファイル入出力|ファイル入出力]] |
* [[Go/ファイル入出力|ファイル入出力]] |
||
2021年4月14日 (水) 09:47時点における版
Go言語は、グーグルの開発したプログラム言語のひとつです。 主にGo言語はサーバ用途で用いられます。Go言語はオープンソース化されており、フリーです。
なお検索の都合などで「golang」などと表記される場合もありますが、このプログラム言語の正式名称は「Go」です。本書では説明の都合上、「Go言語」などとも呼ぶことにします(日本のIT業界でも一般的に受け入れられてい呼び方です)。
目次
- 入門
- Go/環境構築と主な用途
- Go/実行の方法
- Go/文法の概要
- Go/変数 ※ 型変換の単元はとりあえずココに現状ある
- Go/算術演算と数学関数
- Go/条件分岐と繰り返し
- 関数とメソッド
- データ構造
- Go/配列とスライス
- Go/マップ
- Go/構造体 ※ 構造体配列についてはコチラ
- ※ Go言語に「クラス」の機能は無い.
- ※ Go言語に「共用体」の機能は無い.
- その他
※ 以下、未分類
※ 下記の記述は、もし、ある程度の量の記述がまとまったら、それからサブページを作成して、そのサブページに記述を移動してください。
編集の手順としては、さきに記述がある程度の完成をしてから、あとからサブページを作成することを、オススメします。
文字入力の方法
キーボードから文字列の入力を受け付ける方法は、Go言語では、C言語風の方法と、Java風の方法との、少なくとも2種類の方法が用意されている。
C言語風の方法
- コード例
package main
import (
"fmt"
)
func main() {
fmt.Println("文字列をなにか入力してください")
var moji string
fmt.Scan(&moji)
fmt.Printf("あなたは %s と入力しました。",moji )
}
- 実行例
文字列をなにか入力してください ghf あなたは ghf と入力しました。
- 解説
C言語のscanf()関数が、ほぼ似た仕組みである。(というか、おそらく、GoのScanの元ネタがscanfであろう。
- (※ C言語のscanf()について詳しくは C言語/基礎知識#scanf関数を参照せよ)
Java風の方法
- コード例
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
fmt.Println("文字列をなにか入力してください")
hensu := bufio.NewScanner(os.Stdin)
hensu.Scan()
fmt.Printf("あなたは %s と入力しました。",hensu.Text() )
}
- 実行例
文字列をなにか入力してください ghf あなたは ghf と入力しました。
- 解説
ずいぶんと面倒であるが、これはおそらくJavaの文字入力の文法をマネていると思われる。
hensu 以外のbufio や NewScanner など、すべて予約語である。
Go言語は理念としては、本来なら Java の置き換えや連携などは狙っていないのだが(Java との連動をしている理念の言語は(Goではなく) Kotlin である)、なぜかGo言語は文法が所どころ、Javaに似ているのである。
上記コードは、なにをしているかと言うと、おおむね
- キーボード入力のできるオブジェクトを呼び出してメモリ領域などを確保し、 (※ hensu := bufio.NewScanner(os.Stdin) あたり)
- そのオブジェクトをキーボード入力受け付けのモードに設定している、 (※ hensu.Scan() あたり)
のような流れである。
ちなみにJava の場合、コンソール入力の方法は、
// これは Java 用です。Go用でもなくkotlin用でもないので注意! Scanner hensuu = new Scanner(System.in); String hensuu = hensuu.nextLine();
のようにscanner 型を使ってオブジェクトを用意して、メモリ確保のために変数を宣言し(上記コードの Scanner hensuu の部分 )、さらにその変数に nextline プロパティなどを設定するという仕組みである。