「Go」の版間の差分

出典: フリー教科書『ウィキブックス(Wikibooks)』
削除された内容 追加された内容
M 分割
25 行 25 行
;その他
;その他
* [[Go/並列処理|並列処理]]
* [[Go/並列処理|並列処理]]
* [[Go/ネットワーク処理|HTTP]]
* [[Go/HTTP|HTTP]]
* [[Go/ファイル入出力|ファイル入出力]]
* [[Go/ファイル入出力|ファイル入出力]]



2021年4月14日 (水) 09:47時点における版

メインページ > 工学 > 情報技術 > プログラミング > Go

Go言語は、グーグルの開発したプログラム言語のひとつです。 主にGo言語はサーバ用途で用いられます。Go言語はオープンソース化されており、フリーです。

なお検索の都合などで「golang」などと表記される場合もありますが、このプログラム言語の正式名称は「Go」です。本書では説明の都合上、「Go言語」などとも呼ぶことにします(日本のIT業界でも一般的に受け入れられてい呼び方です)。

目次

入門
関数とメソッド
データ構造
その他

※ 以下、未分類

※ 下記の記述は、もし、ある程度の量の記述がまとまったら、それからサブページを作成して、そのサブページに記述を移動してください。

編集の手順としては、さきに記述がある程度の完成をしてから、あとからサブページを作成することを、オススメします。


文字入力の方法

キーボードから文字列の入力を受け付ける方法は、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 プロパティなどを設定するという仕組みである。