LoginSignup
4
1

More than 3 years have passed since last update.

ノリと勢いで Go で Hello World する

Last updated at Posted at 2019-10-31

はじめに

タイトルのままです。

読み手の対象者は、
僕と同じで

  • Go 言語って名前だけ知ってる
  • 何ができるのか、とか、実際にコードを見たことはない
  • でもなんか触ってみたい

そんな人です。

いつも通り、やりながら、書いていきます。

やることは、
公式のなんかセットアップ系のページ をやります

実行環境

持病のローカルに色々入れてはいけない病が出ちゃうので、
docker 内でやります。

docker の alpine でやります。

$ cat /proc/version
Linux version 4.9.184-linuxkit (root@a8c33e955a82) (gcc version 8.3.0 (Alpine 8.3.0) ) #1 SMP Tue Jul 2 22:58:16 UTC 2019

1. install

知らないんだから、持ってないですw

$ apk add go
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/11) Installing binutils-libs (2.30-r2)
(2/11) Installing binutils (2.30-r2)
(3/11) Installing gmp (6.1.2-r1)
(4/11) Installing isl (0.18-r0)
(5/11) Installing libgomp (6.4.0-r5)
(6/11) Installing libatomic (6.4.0-r5)
(7/11) Installing mpfr3 (3.1.5-r1)
(8/11) Installing mpc1 (1.0.3-r1)
(9/11) Installing gcc (6.4.0-r5)
(10/11) Installing go (1.9.4-r0)
(11/11) Installing gcc-zsh-completion (5.4.2-r1)
Executing busybox-1.27.2-r11.trigger
OK: 603 MiB in 67 packages

$ go version
go version go1.9.4 linux/amd64

うん。いけた。
この辺、パス指定とかしなくていいんだね。

2. Go ファイルを書く

公式のいう通りに進めます。

$ mkdir go/src/hello
$ cd go
$ vim src/hello/hello.go
hello.go
package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

おそらくこいつを呼び出すのだろう。

$ cd src/hello
$ go build
# _/app/projects/go_learn/go/src/hello
/usr/lib/go/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find Scrt1.o: No such file or directory
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find crti.o: No such file or directory
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lpthread
/usr/lib/gcc/x86_64-alpine-linux-musl/6.4.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lssp_nonshared
collect2: error: ld returned 1 exit status

めっちゃエラー出るじゃん...。

PATH を通す

$ vim ~/.zshrc
export GOPATH=$HOME/go

もだめ。

〜〜〜30分くらい頑張る〜〜〜

無理なので、

初学者向けのワークスペースで質問してみた。
(2年目だけど初学者でいいよね。いいよね?)
https://twitter.com/OgiharaRyo/status/1189467382328152064

すぐに回答がもらえた。こういうのすごい助かる
image.png

教えてもらった issue のリンク

そのままやった

$ apk add --no-cache musl-dev
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.7/community/x86_64/APKINDEX.tar.gz
(1/1) Installing musl-dev (1.1.18-r4)
OK: 613 MiB in 68 packages
$ go build
$ ls
hello     hello.go

できた!!!!!

$ ./hello
hello, world

できた!!!

できた!!!!!!!!!!!

終わり

今回の大きい収穫は、ワークスペースで教えてもらった
ぐぐり方のこつですね( Go 関係ないw)

ググる時は、それっぽいワードをダブルクォーテーションで囲うとノイズを除去できます。

本当に助かりました。ありがとうございます!

結論

Go でも hello world だけなら難しくない

せっかく Go が動かせる環境を作れたので、
もうちょっと色々やってみようと思います。

今回はこれまで!ありがとうございました!

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1