あなたの最初の言語golangは、入門チュートリアルを詳細に|あなたの最初のgolangのチュートリアル

この記事では、最初の個人的なブログ登場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/goUnixシステム。

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.

使用stringutilhello.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.Errort.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の下でライセンスされています。

おすすめ

転載: www.cnblogs.com/kezunlin/p/12047365.html