Go関連のことを調べてみた2020年08月13日

Go関連のことを調べてみた2020年08月13日

【Go】ルーティングライブラリgo-chiの使い方

# go-chi
– net/http
– go-chi
– gorilla
– echo

とかがあると思います(他にもあるけど省略)が、go-chiやgorillaはその中でもフレームワークとして使いやすいながらにハンドラでは標準パッケージのnet/httpをそのまま使用できたり導入しやすい部類に入ると思います。実際に見ていきましょう。

“`
$ go get github.com/go-chi/chi
“`

## 使っていきます

まずはハンドラを定義します。ハンドラ自体はnet/httpを使うので、ライブラリを消したくなった場合はルーティングの記述だけを変更すれば良いです。

“`go:handler.go
package handler

func Get(w http.ResponseWriter, req *http.Request) {
// ハンドラを記述
fmt.Println(“呼ばれた”)
return
}
“`

ルーティングでハンドラを呼び出します。

“`go:router.go
package router

type R

元記事を表示

MAC OSに言語(GO&Python)をインストール

## はじめに

今更ながらMacMini 2020を購入しため、プログラミングの勉強を最近行っているので、
備忘録も兼ねて言語のインストール履歴を記載しておきます。

## HomeBrewのインストール

Mac OSのパッケージ管理システムで、CentOSで言うところのyumやdnfと同じです。
インストールにては以下コマンドを実行します。

“`conseole
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
“`

私は現在GOとPythonを使ってプログラミング学習を行っているので、以下2つをインストールしておきます。

## GOのインストール

“`conseole
$ brew install go

$ go version
go version go1.14.6 darwin/amd64
“`

## Python 3系のインストール

“`conseole

$ brew install pyenv

$

元記事を表示

revel(go)のアプリケーション環境を構築

goのアプリ開発するためのフレームワークがいくつかあります。
その中でも、revelがMVCの思想を深く取り入れているものの一つとされています。
本記事では、goをインストールしていない状態からrevelのアプリ起動までを行った際の手順を残していきます。

# 前提
brew がインストールされていることが前提です。

# brewをアップデートする
まず初めにbrewを最新のものにアップデートしましょう。

“`
$ brew update
“`

# goenvをインストールする
“`
# goenvをインストール
$ git clone https://github.com/syndbg/goenv.git ~/.goenv
“`

利用しているシェルに環境変数を設定する。

“`~/.zshrc

export GOENV_ROOT=$HOME/.goenv
export PATH=$GOENV_ROOT/bin:$PATH
eval “$(goenv init -)”
“`

設定が完了したら、シェルに反映させ、
goenvが利用できる状態になっているか確認します

元記事を表示

go言語でHTMLをスクレイピングしてそれを送信するslackbotを作成する

# はじめに
普段はvueとかtypescriptとか使って、フロントエンドを書いています。
純粋に興味がありgo言語を1から勉強し始め、試しにスクレイピングして取ってきたデータを定時実行で送るslackbotを作成しました。
結構似たようなこと書いてる記事が多いのですがあまり最新の情報がなくメモのためでもあります。
go言語触り始めたばかりなのでコードが理解できず不要なのが混じっているかもしれませんがご了承ください。

完成したのはこんな感じです、ローカルで試したときなので時間はおかしいです。
スクリーンショット 2020-08-12 14.58.03.png
ソースコードは[こちら](https://github.com/mmmommm/unigurikun)にあります、よかったらstar押していってください!

元記事を表示

Golang 基礎(並列処理) part3

[part2](https://qiita.com/mi11km/items/8b336736ed66ec48705c)の続き

## goroutine
goroutine: 並列処理。
go 処理 とかく。処理が終わらなくても、プログラムのコードは終了する。
対策①sync.WaitGroupを使う!

“`golang
package main

import (
“fmt”
“sync”
)

func goroutine(s string, wg *sync.WaitGroup) {
defer wg.Done() // 並列処理が終了したと伝える
for i := 0; i < 5; i++ { fmt.Println(s) } } func normal(s string) { for i := 0; i < 5; i++ { fmt.Println(s) } } func main() { var wg sync.WaitGroup wg.Add(1) // 処理するべき並列処理を1つ追加する go goroutine("world"

元記事を表示

【Go】【Ginkgo】FizzBuzzをGinkgoでテストしてみる

## はじめに
最近Goの勉強をしてて、簡単なWebサーバーを作ってみたり、コマンドラインで動作するツールを作ったり、、、としているんですけど、そういやテスト書いたことないなあと思って今回の記事を書くことにしました!

## Ginkgoを選んだ理由
Ginkgoの書き方がなんとなくrspecに似てるからです。
昔Railsを書いていたことがあるので、簡単に書けるんじゃないかな〜っていう安易な発想です。

## テストの準備
Ginkgoをインストールします。

“`
go get github.com/onsi/ginkgo/ginkgo
go get github.com/onsi/gomega/…
“`

ディレクトリとテスト用ファイルを作成します。

“`
mkdir fizzbuzz
cd fizzbuzz
ginkgo bootstrap
ginkgo generate fizzbuzz
“`

## 実装
今回作成するテストケースは以下の通りとします。よく見るFizzBuzzですね。

– 数値が3の倍数であれば「Fizz」を返す
– 数値が5の倍数であれば「

元記事を表示

nuxtのformからPOSTされたデータをgoのサーバで受け取る(私的メモ)

## nuxt.js(vueファイル)

Vuetifyのコンポーネントを活用し、formを作成、validationとresetボタンを実装しました。

“`vue