Blogブログ

システム

go言語

2020.07.01

Go言語入門の入門(vagrant/centos7にgo入れて変数にぶち込んでPrintするだけ)

公式ページ

https://golang.org/

さて見ていきましょう。

go言語が選ばれる理由…それは…

  1. シンプル
  2. 高速
  3. 1つのプログラムから複数のプロセスやスレッドを生成する

だそうです。

まずはvagrantでCentOS7を立ち上げてgolangをインストールします。

そういえば…macを新しくしたばかりだったのでvagrant listしても何も出てこないところから。。。

yamamoto@MacBook-Pro go % vagrant box add centos/7
==> box: Loading metadata for box 'centos/7'
    box: URL: https://vagrantcloud.com/centos/7
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) libvirt
3) virtualbox
4) vmware_desktop

Enter your choice: 3
==> box: Adding box 'centos/7' (v2004.01) for provider: virtualbox
    box: Downloading: https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box
Download redirected to host: cloud.centos.org
Progress: 3% (Rate: 99258/s, Estimated time remaining: 1:05:2

Estimated time remaining: 1:05:2
(心が折れそうです。)

待つこと1時間…

==> box: Successfully added box 'centos/7' (v2004.01) for 'virtualbox'!

ありがとうございます。

yamamoto@MacBook-Pro go % vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
yamamoto@MacBook-Pro go % vagrant up

ではvagrant sshで入ってみましょう。

で、ログインしたら早速goをインストールしてみます。

vagrant ssh
sudo yum install epel-release
sudo yum install -y golang

これでcentos7にgoが入ったので、
準備できました。

小さいgo言語プログラムを書いてみましょう。

package main
import "fmt"

func main() {
    var txt string
    txt = "変数はこのように上でvar XXX 型 という形で宣言してから使う"
    var txt2 , txt3 string
    txt2 = "このようにtxt2とtxt3を同時にstring型で宣言したりできる/ちなみにデフォルトは空文字。"
    var int1 , int2 int
    int1 = 1
    int2 = 2
    text4 := "↑このようにintも宣言できる。あと宣言と変数導入を:=で同時に行うこともできる"
    int3 , int4 := 3 , 4
    var (
       sampleint int
       sampletext string
    )
    sampleint = 1000
    sampletext = "このように、複数の型をvar()で宣言もできる"

    fmt.Println("Hello 世界")
    fmt.Println(txt2)
    fmt.Println(txt3)
    fmt.Println(text4)
    fmt.Println(int1)
    fmt.Println(int2)
    fmt.Println(int3)
    fmt.Println(int4)
    fmt.Println(sampleint)
    fmt.Println(sampletext)

    fmt.Println(txt)
    fmt.Println("fmtをimportしてるのでfmtオブジェクトの中の関数がいろいろ使える")
    fmt.Println("型は、小数点のfloat64 ,true/falseのbool , nilもあるよ")

    //printfを使うと、%d や%f  %sなど、どの型の値を表示するか仕様的に決まってるので
    //↓このようなこともできます。
    name := "yamamoto"
    age  := 37
    kg :=80.5
    flg :=true

    fmt.Printf("%s , %d , %f , %t" , name ,age ,kg ,flg)
}
~         

はい。index.goを作ります。goのファイルはpackageに所属しないとなので、
mainというpackageを使っています。
そうするとこでfunc main(){}が使えます。

で、いろいろプログラムの中で解説してるので読んでください。

実行するときはファイルを閉じてから
go run index.goと実行します。

宣言してても使ってない変数があるとエラーで実行できません。
間違った変数名で実行してると一つでも間違っている場合は全て実行されません。

実行結果はこれになります。


[vagrant@localhost ~]$ go run index.go
Hello 世界
このようにtxt2とtxt3を同時にstring型で宣言したりできる/ちなみにデフォルトは空文字。

↑このようにintも宣言できる。あと宣言と変数導入を:=で同時に行うこともできる
1
2
3
4
1000
このように、複数の型をvar()で宣言もできる
変数はこのように上でvar XXX 型 という形で宣言してから使う
fmtをimportしてるのでfmtオブジェクトの中の関数がいろいろ使える
型は、小数点のfloat64 ,true/falseのbool , nilもあるよ

さて、次回はifやeachや関数などをやっていきます。