0
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Goの学習備忘録 #2 goenvでバージョン管理しようとしたら古いバージョンしか見つかりません

概要

Go言語を扱う際に、goenvを導入しようとしたら、古いバージョンしか見つからず詰まった話

homebrewでgoenvをダウンロード

macだしhomebrewでいいかなと思い、
$ brew install goenv
無事にインストールは完了

インストールできるgolangのバージョンを確認

$ goenv install -l
=> Available versions:
  1.2.2
  1.3.0
  1.3.1
  :
  :
  1.11.0
  1.11beta2
  1.11beta3
  1.11rc1
  1.11rc2
  1.11.1
  1.11.2
  1.11.3
  1.11.4
  1.12beta1

あれ?1.15.2がstable versionになってたから入れたいのにリストにない
あーgoenvのバージョン古いからか

$ brew upgrade goenv
=> Warning: goenv 1.23.3 is already installed

ん?どういうこと?

goenvでバージョン管理

homebrewじゃなくてgitでインストール

1.23系から2.0系にする場合は、git cloneで入れればよいという記事がちらほらあったので、gitでインストールする

公式に倣いインストール
$ git clone https://github.com/syndbg/goenv.git ~/.goenv

PATHを通す

export GOENV_ROOT=$HOME/.goenv
export PATH=$GOENV_ROOT/bin:$PATH
eval "$(goenv init -)"
export PATH="$GOROOT/bin:$PATH"
export PATH="$PATH:$GOPATH/bin"

PATHを通したところで、コードを実行


$ go run main.go 
main.go:1499:2: package myProject/mylib is not in GOROOT (/myProject/mylib)
main.go:1500:2: package myProject/mylib/hogehoge is not in GOROOT (myProject/mylib/hogehoge)

$ go build
go: cannot find main module; see 'go help modules'

runもbuildもうまく動かない

 gomod

Goのコードはライブラリも含めてすべて\$GOPATH/src以下に置くという約束になっている。
将来の Go 1.12 からこのやり方を改め、\$GOPATH/srcやvendorは廃止となりGo Modulesという物を採用する事になった。

今回は1.15.2を使用しているので、gomodを作成する必要があるみたい

golangの設定変更

go env -w GO111MODULE=on 

gomod作成

プロジェクトの直下で

$ go mod init myProject
$ go build
$ go run main.go
=> Human!!

無事動いた

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
0
Help us understand the problem. What are the problem?