Go言語の覚書き(基本編1)

目次

インストール手順

  • GitHubよりチェックアウト
cd `
git clone https://github.com/syndbg/goenv.git `/.goenv
echo 'export GOENV_ROOT="$HOME/.goenv"' >> `/.bash_profile
echo 'export PATH="$GOENV_ROOT/bin:$PATH"' >> `/.bash_profile 
  • 「goenv init」を呼び出してShimsとオートコンプリートを有効にする。
echo 'eval "$(goenv init -)"' >> `/.bash_profile 
  • ログインシェルを再読み込みする。
source `/.bash_profile
  • 任意のバージョンをインストール
goenv install 1.11.0
go version
# Output : go version go1.11 linux/amd64
  • 下記追加
`/.bash_profileに
export GOENV_VERSION=1.11.0

アンインストール

  • ログインシェルより下記行を削除
export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"
rm -rf `goenv root` 

実行方法

  • サンプルプログラム
package main
import "fmt"

function main() {
  fmt.Printf("hello, world¥n")
}
  • 実行方法
# ビルドして実行する
go build hello.go 
./hello 

# または、ビルド実行を同時に行う
go run hello.go 

データ型

  • データ型宣言
var ival int     // 0
var fval float64 // 0
var bval bool    // false
var sval string  // ''
  • データ型宣言(初期値指定)
ival := 10
fval := 12.3
bval := true
sval := "hoge"
  • データ型宣言(まとめて定義)
var (
  ival int
  fval float64
  bval bool
  sval string
)
  • データ型宣言(まとめて定義)
ival, fval, bval, sval := 10, 10.1, true, "hoge"

文字列処理

  • 文字列
var sval string
sval = "good " + "moring"
fmt.Println(sval)
// output: good moring

配列

  • 配列1
var iVals [5]int
iVals[0] = 10
iVals[1] = 20
iVals[2] = 30
fmt.Println(iVals)
// output: [10 20 30 0 0]
  • 配列2
iVals := [...]int{10, 20, 30, 0, 0}
fmt.Println(iVals)
// output: [10 20 30 0 0]

ポインタ型

  • ポインタ
sVal := "hoge"
var psVal *string
psVal = &sVal
fmt.Println(psVal)
// Output : 0xc00000e1e0 (address of sVal)
fmt.Println(*psVal)
// Output : hoge

関数

  • 関数
package main
import "fmt"

func hello(aVal string) string {
  return "hello " + aVal
}

func main() {
  fmt.Println(hello("taro"))
  // Output : hello taro
}
  • 関数(返り値複数)
package main
import "fmt"

func hello(aVal string) (string, string) {
  return "hello ", aVal
}

func main() {
  var sVal1, sVal2 string
  sVal1, sVal2 = hello("taro")
  fmt.Println(sVal1 + " " + sVal2)
  // Output : hello taro
}
  • 関数(即時関数)
package main
import "fmt"


func main() {
  var sVal1, sVal2 string
  sVal1, sVal2 = func (aVal string) (string, string) {
    return "hello ", aVal
  } ("taro")

  fmt.Println(sVal1 + " " + sVal2)
  // Output : hello taro
}

参考サイト

GitHub - syndbg/goenv: Like pyenv and rbenv, but for Go.