この記事では、最初の個人的なブログ登場https://kezunlin.me/post/a0fb7f06/最新の内容に、ようこそ!
あなたの最初のチュートリアルgolang
チュートリアルを行きます
バージョン:
- 行く:1.13.1
インストール
wget https://dl.google.com/go/go1.13.1.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.13.1.linux-amd64.tar.gz
ll /usr/local/go
vim ~/.bashrc
export PATH=$PATH:/usr/local/go/bin
source ~/.bashrc
zshの用途は、プロファイルenvの
~/.zshrc
は、bash用のenvプロファイルを~/.bashrc
。
チェックバージョン
go version
go version go1.13.1 linux/amd64
アンインストール
ただ削除 /usr/local/go
セットGOPATH
、ワークスペースのディレクトリを作成します$HOME/go
。
GOPATH
環境変数は、ワークスペースの場所を指定します。何がいる場合GOPATH
に設定され、あると想定されていない$HOME/go
Unixシステム。
注
GOPATH
あなたの囲碁のインストールと同じパスでなければなりません。
コマンドを発行
vim .bashrc
# for golang
export GOPATH=$HOME/go
export PATH=/usr/local/go/bin:$GOPATH:$PATH
source .bashrc
#go env -w GOPATH=$HOME/go
$ echo $GOPATH
/home/kezunlin/go
$ go env GOPATH
/home/kezunlin/go
コード編成
- プログラマは通常、1つのワークスペース内のすべての彼らの移動コードを保つ行きます。
- ワークスペースは、(例えば、Gitリポジトリで管理される)多くのバージョン管理リポジトリが含まれています。
- 各リポジトリは、1つ以上のパッケージが含まれています。
- 各パッケージには、単一のディレクトリ内の1つのまたは複数のGoのソースファイルで構成されています。
- パッケージのディレクトリへのパスは、インポートパスを決定します。
このような
bin/
hello # command executable
outyet # command executable
src/
github.com/golang/example/
.git/ # Git repository metadata
hello/
hello.go # command source
outyet/
main.go # command source
main_test.go # test source
stringutil/
reverse.go # package source
reverse_test.go # test source
golang.org/x/image/
.git/ # Git repository metadata
bmp/
reader.go # package source
writer.go # package source
... (many more repositories and packages omitted) ...
注
symbolic links
ワークスペースにファイルやディレクトリをリンクするために使用すべきではありません。
import path
一意のパッケージを識別する文字列です。
外出先での例
あなたの最初のプログラム
mkdir -p $GOPATH/src/github.com/kezunlin/hello
cd $GOPATH/src/github.com/kezunlin/hello
vim hello.go
コード付き
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
ビルドと実行
go build
./hello
hello, world
インストールとクリーンなバイナリファイル
# install hello to $HOME/go/bin
go install
# clean $HOME/go/bin/*
go clean -i
〜/行く/ SRC $
go build github.com/kezunlin/hello/
〜/行く/ srcに$go install github.com/kezunlin/hello/
あなたの最初のライブラリ
stringutilライブラリー
mkdir -p $GOPATH/src/github.com/kezunlin/stringutil
cd $GOPATH/src/github.com/kezunlin/stringutil
vim reverse.go
コード
// Package stringutil contains utility functions for working with strings.
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
package name
どこ
name
輸入品のためパッケージのデフォルト名です。(パッケージ内のすべてのファイルは同じ名前を使用する必要があります。)
実行可能なコマンドは、常に使用する必要がありますpackage main
。
ビルドライブラリー
go build github.com/kezunlin/stringutil
#This won't produce an output file. Instead it saves
#the compiled package in the local build cache.
使用stringutil
中hello.go
package main
import (
"fmt"
"github.com/kezunlin/stringutil"
)
func main() {
fmt.Printf("hello, world\n")
fmt.Println(stringutil.Reverse("!oG ,olleH"))
}
ビルドとインストール
go build github.com/kezunlin/hello
go install github.com/kezunlin/hello
~/go/bin$ ./hello
hello, world
Hello, Go!
フォルダ構造
tree .
.
├── bin
│ └── hello
└── src
└── github.com
└── kezunlin
├── hello
│ └── hello.go
└── stringutil
└── reverse.go
6 directories, 3 files
テスティング
あなたは、で終わる名前のファイル作成することにより、テストを書く_test.go
という名前の関数が含まれTestXXX
た署名FUNCとを(t *testing.T)
。テストフレームワークは、このような各機能を実行します。機能のような失敗関数を呼び出した場合t.Error
やt.Fail
、テストは失敗したと考えられています。
- ファイル名:xxx_test.go
- 関数名:TextXXX
- エラー:
t.Error
またはt.Fail
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世 ,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
テストOK
$ go test github.com/kezunlin/stringutil
ok github.com/kezunlin/stringutil 0.165s
テストエラー
--- FAIL: TestReverse (0.00s)
reverse_test.go:16: Reverse("Hello, 世界2") == "2界世 ,olleH", want "界世 ,olleH"
FAIL
exit status 1
FAIL github.com/kezunlin/stringutil 0.003s
リモートパッケージ
$ go get github.com/golang/example/hello
$ $GOPATH/bin/hello
Hello, Go examples!
コマンドを行きます
go help gopath
go help importpath
go help test
go build
go install
go clean
go get # fetch,build and install
参照
歴史
- 20191011:作成しました。
著作権
- 投稿者:kezunlin
- ポストリンク:https://kezunlin.me/post/a0fb7f06/
- 著作権:別途明記しない限り、このブログのすべての記事はCC BY-NC-SA 3.0の下でライセンスされています。