由于刚开始学习Golang,所以我整理了一些基础信息

对于框架的评价等是个人的感受。

特征

为什么Go语言(golang)是一种好的编程语言?为什么应该使用Go来编写程序?
http://www.yunabe.jp/docs/why_golang_is_good.html

    • Google製(2009年)。C言語、utf8、memcachedの開発者同士が共同開発

 

    • 高パフォーマンス

バブルソート性能比較で、PHP5.6の82倍、PHP7の32倍

https://liginc.co.jp/284306

素数計算性能比較で、Pythonの80倍、C, Javaとほぼ同速度

改めて色々なプログラミング言語の実行速度を比較してみた

シンプルで厳格な文法

表現のブレが無いように複数の書き方を極力許さない

while無しでforで表現
三項演算子無し

不具合が起きそうな記述は許さない

コンパイル時に以下はすべてエラーとなる

使われていない変数
値を代入したのに読み出されていない変数
読み込んだだけで使っていない外部ライブラリ

公式の開発支援ツールが充実

フォーマッタ

書式が強制される。変更不可だが書式で悩む必要が無い。

go fmt

フォーマットのみ

go import

フォーマット + 不足ライブラリ補完。gofmtの上位互換。

ユニットテスト

go test

静的解析

golint, go vet

ドキュメント確認

godoc

並列処理が簡単に書ける(goroutine/channel)

シングルバイナリでどこでも動作する

クロスコンパイルで各OS、CPUアーキテクチャ向けに単一の実行ファイルが作れる
デプロイは対象に実行ファイルを置くだけ、実行環境の用意は不要

Linux: GOOS=linux GOARCH=amd64 go build main.go
Windows: GOOS=windows GOARCH=amd64 go build main.go
MAC: GOOS=darwin GOARCH=amd64 go build main.go

文法に癖がある

オブジェクトでなく構造体

type Person struct{ Name string }
// Person 型に対してメソッドを定義する
func (p Person) Greet(msg string) {
fmt.Printf(“%s, I’m %s.\n”, msg, p.Name)
}
func main() {
p := Person{Name: “Taro”} // 値型の変数を用意する
p.Greet(“Hi”) //=> Hi, I’m Taro.
}

返り値を複数持てる

例外構文が無い。いわゆるtry-catch-finallyは以下のように表す

package main
import (
“log”
“os”
)
func main() {
f, err := os.Open(“filename.ext”)
if err != nil {
log.Fatal(err)
}
defer f.Close()
}

应用案例

    • 得意

バッチやAPI等、速度が必要な内部処理
並列処理
microservice

苦手

Webアプリケーション
(Web系F/Wが乱立しており、他LL(PHP,Ruby,Python..etc)のようにまだデファクトスタンダードというのがなさそう)

使用例

製品

Docker, kubernetes, Packer, Mackerel,

事例

メルカリ・ソウゾウでは どうGoを活用しているのか?

社内ツール(テスト結果からAPIドキュメント自動作成)、プッシュ配信基盤、入稿管理ツール

GunosyのMicroServicesの現状とGoの使い所

管理用APIの大半がGolang、画面系はDjangoやRails

FINAL FANTASY Record Keeperを支えたGolang

マスタデータのフォーマット変換等にGoを活用

インテリジェンス社活用事例

データ連携/集計、アラート、並列処理などバッチ系にGoを活用, Web側はHackを利用
https://career.levtech.jp/hikalab/report/detail/33/

トークノートとGolangと私

WebAPI部分をGoで実装、パフォーマンス改善やMicroService化で活用

引入开发环境步骤

只需要一个选项

为了满足您的要求,我将用中文对以下内容进行释义:

    • 以下の環境変数指定が必須

GOROOT

GOのシステムパス
通常は/usr/local/goが多い
「go env GOROOT」で確認可能

GOPATH

GO開発用の作業データパス
通常は\$HOME/devや$HOME/goが多いらしい
GOROOTと同じパスに出来ない
初期設定時にPATH=\$PATH:GOPATH/binを通す必要あり

export PATH=\$PATH:$(go env GOPATH)/bin

引入程序

前提是在Linux环境下运行。建议参考以下网站获取最新版本。适当地修改wget的目标。


  cd /usr/local/src
  wget https://dl.google.com/go/go1.11.5.linux-amd64.tar.gz
  tar zxvf go1.11.5.linux-amd64.tar.gz
  mv go /usr/local
  export GOROOT=/usr/local/go
  export GOPATH=$HOME/go
  export GOBIN=$GOPATH/bin
  export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

框架 ​jià)

网页框架数量众多,但常偏爱使用用途相对轻量简洁的框架(如echo、Gin等)。
如果需要全栈框架,可以考虑参考Java的PlayFramework开发的Revel等,但选择文档等较多的LL系列框架似乎更好。
ORM方面,GORM印象较为主流。

    • Webフレームワーク

Golang フレームワーク比較

https://qiita.com/yumin/items/5de33b068ead564ebcbf

Go言語Webフレームワークランキング

https://qiita.com/loftkun/items/1a9951d1864bebdc51e1

ORM

Go言語でのORMを色々検討してみた

https://goo.gl/9tvXFN

学习方式

如果有接触过其他编程语言的人,只要完成一遍TourOfGo教程,就能大致掌握基本语法和类似于其他编程语言中的一些概念是如何在Go语言中表达的。推荐的学习资料是实践技巧类的书籍或者可以动手实践的教程类书籍。

    • 公式

英語: https://golang.org/

日本語訳サイト: http://golang.jp/

基礎文法チュートリアル

Tour Of Go(日本語訳)

https://go-tour-jp.appspot.com/welcome/1

PHPerがGolangを試してみた 前編

http://tech.innovation.co.jp/2017/12/19/P-H-Per-Golang.html

PHPerがGolangを試してみた 後編

http://tech.innovation.co.jp/2018/03/14/golanggolangphperphper.html

実践用Tips

Web

Goコードの書き方

http://golang.jp/code

Effective Go(日本語訳)

http://golang.jp/effective_go

Go 言語(Golang) はまりどころと解決策

https://www.yunabe.jp/docs/golang_pitfall.html

みんなのGo言語

言語仕様

http://gihyo.jp/dev/feature/01/go_4beginners

技術選択

2016年資料だけど複数社のライブラリ等の技術選択とその理由がまとまっていて大変参考になります。
https://godgarden.goat.me/3Hf9qTNO

チュートリアル

Whispering Gophers(チャットアプリチュートリアル)

http://whispering-gophers.appspot.com/talk.slide#1

Learn Go with tests(TDDチュートリアル)

https://quii.gitbook.io/learn-go-with-tests/

現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発(Udemy動画チュートリアル)

https://www.udemy.com/go-fintech/

广告
将在 10 秒后关闭
bannerAds