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

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

vscodeでサブディレクトリにgo.modを管理している場合はexperimentalWorkspaceModuleを有効化する必要がある

以下のようなディレクトリ構成でgoprojectディレクトリから開くとvscodeがサブディレクトリのgo.modを認識してくれず、`can not import`エラーが発生し困っていました。

“`
goproject
|- test1
| |- mani.go
| |- go.mod
| |- go.sum
|- test2
|- mani.go
|- go.mod
|- go.sum
“`

調べたところLanguage Serverのgoplsのデフォルト設定だとルートディレクトリにgo.modファイルが無いとダメなようで、**experimentalWorkspaceModule**の有効化で上記が解決しました。

# 環境
– macOS Catalina v10.15.7
– vscode v1.51.1
– go version go1.15 darwin/amd64

# 有効化
## 拡張機能
vscodeの拡張機能でGoをインストールします。
![拡張機能__Go_—_tipstar-ops.png](https://qiita-im

元記事を表示

パラダイムシフト

[Coming Soon – EC2 C6gn Instances – 100 Gbps Networking with AWS Graviton2 Processors](https://aws.amazon.com/jp/blogs/aws/coming-soon-ec2-c6gn-instances-100-gbps-networking-with-aws-graviton2-processors/) / [Graviton](https://aws.amazon.com/jp/blogs/aws/category/compute/graviton/)
この発表を見て、今後 IaaS では x86_64 ではなく arm64/aarch64 を選択することにした。
私が好んで使う Google Cloud や Azure は未対応なので AWS 一択ということになる。

使用する言語も、もう Java は使わず、Go/C++(ひょっとすると Rust)を使用することにしている。
x86_64 から arm64 へ、Java から Go へ。

私はこれまで書いてきたすべての Ja

元記事を表示

LeetCodeに毎日挑戦してみた 66. Plus One(Python、Go)

## はじめに

無料英単語サイト[E-tan](https://your-e-tan.com/)を運営中の@ishishowです。

プログラマとしての能力を上げるために毎日leetcodeに取り組み、自分なりの解き方を挙げていきたいと思います。

#### Leetcodeとは

[leetcode.com](https://leetcode.com/)
ソフトウェア開発職のコーディング面接の練習といえばこれらしいです。
合計1500問以上のコーデイング問題が投稿されていて、実際の面接でも同じ問題が出されることは多いらしいとのことです。

golang入門+アルゴリズム脳の強化のためにgoとPythonで解いていこうと思います。(Pythonは弱弱だが経験あり)

#### 14問目(問題66)

#### 66. Plus One

#### 問題内容

> Given a **non-empty** array of decimal digits representing a non-negative integer, increment one to the integ

元記事を表示

OpenAPI GeneratorでGoのAPIサーバー/クライアントコードを自動生成する

この記事は[Go 4 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/go4) 2日目の記事です。

# この記事について
OpenAPIのyamlファイルから、APIサーバーやクライアントコードを生成するopen-generatorというツールが存在します。
今回は、これを用いてGoのAPIサーバー/クライアントのコードを自動生成させ、それに手を加えて実際に使えるようにするまでの過程を紹介します。

## 使用する環境・バージョン
– go version go1.14 darwin/amd64
– openapi 3.0.1
– openapi-generator 4.3.1

# OpenAPIとは?
OpenAPIとは、REST APIを記述するためのフォーマット規格です。決められた記法でAPI仕様を記述すると、その内容をSwagger UIというきれいな形式にして確認することができるようになります。
![スクリーンショット 2020-11-23 16.13.26.png](https://qiita-i

元記事を表示

don’t use underscores in Go names;の簡易的な対処法(初学者向け)

#はじめに
Goを最近勉強していて変数宣言で”don’t use underscores in Go names”が出たのでメモ書きしておきます。
初学者の方の参考になれば幸いです。

#事象
bool型の変数を定義して、結果と型を出力させるという簡単なコードです。

“`Go
package main

import (
“fmt”
“reflect”
)

func main() {
a := 1
b := 5
var num_bool bool = a > b //ここに ”don’t use underscores in Go names;”が出てる

fmt.Println(num_bool)
fmt.Println(reflect.TypeOf(num_bool))
}
“`
そのままでも以下のようにビルドは通りますが何か気持ちが悪いので対処します。

“`
PS C:\pg\Go\study> go build main.go
PS C:\pg\Go\study> ./main
false
bool
“`

#対処
don’t use unders

元記事を表示

Railsしか使ったことない駆け出しエンジニアが、Goの環境構築してみた!

## なぜGoを入れるの?
2020/12/1 現在、本気でいきたい企業がGoを開発環境としているから!面接受けるからには、少しでも勉強しとかなきゃと息込んでやってみました!

なお、私の環境は
macOS Catalina ver.10.15.7です。

## 公式HPにGo!
git cloneとかで入れる方法もあるそうですが、せっかくだからGoの公式HPを参考にすることを決意!
### 1. [https://golang.org/doc/install](https://golang.org/doc/install)にGo!
### 2. Download Go for Macをクリックしてダウンロード
![627ee2cbc04080088f50a8c01127552d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/696002/15a4cc89-7aa7-ddcb-fa7f-3a322b94de0e.png)
あら、かわいい…

### 3. インストールされているか確認
“The pack

元記事を表示

AtCoder Regular Contest 108のメモ

# 前置き

Atcoderをやってみたので、自分用のメモです。
あとから加筆・修正する予定です。

# 問題

https://atcoder.jp/contests/arc108

# A

“`Q_A.go
package main

import (
“fmt”
)

func main() {
var S, P int64
fmt.Scanf(“%d %d”, &S, &P)

var ans string = “No”
var N int64
for N=1; N*N<=P; N++{ M := S - N if P == N * M{ ans = "Yes" } } fmt.Printf("%s\n", ans) } ``` # B ```Q_B.go package main import ( "fmt" "strings" ) func check(queue []string) []string{ if

元記事を表示

完全個人用のURL管理サービスをReact×Firebase×Go×Herokuで作った話

# はじめに
こんにちはRIN1208です。

この記事はタイトルに書いてある通り、完全に個人で使う用に作成したのでそれについて書いていきたいと思います。
今回作ったものは[こちら](https://github.com/rin1208/link-note)

この記事は[ITRCアドベントカレンダー](https://adventar.org/calendars/5535)の1日目の記事になります。

# 今回の構成
![スクリーンショット 2020-11-25 14.17.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/329144/baf9e69f-b692-f375-624e-e4479579a34e.png)

今回は上記のような構成で作成しています。サーバーサイドはHeroku、フロントエンドはFirebase Hosingにデプロイしています。
またJWTが無効な値だった場合は6, 7の部分の処理はせずにエラーを返すようにしました。

## できたもの
以下のようなURLを貼り付

元記事を表示

daprでつくるマイクロサービス

## はじめに

この記事は、 [富士通クラウドテクノロジーズ Advent Calendar 2020](https://qiita.com/advent-calendar/2020/fjct) の**2日目**の記事です。

1日目は @miyuush さんの **[ニフクラがTerraformに対応したので使ってみた【基礎編】](https://blog.pfs.nifcloud.com/20201201_terraform_provider_nifcloud)** でした!
昨日リリースされたばかりで生まれたてホヤホヤ感のある [nifcloud/terraform-provider-nifcloud](https://github.com/nifcloud/terraform-provider-nifcloud) v1.0.0 ですがこれからの機能エンハンスが楽しみですね!どんどんIaCにしていきたい:yum:

改めましてこんにちは!NIFCLOUDのいくつかのサービスのAPIを開発している @kzmake と申します。
入社しサービスを開発してはや4年目になりました。こ

元記事を表示

LeetCodeに毎日挑戦してみた 58. Search Insert Position(Python、Go)

## はじめに

無料英単語サイト[E-tan](https://your-e-tan.com/)を運営中の@ishishowです。

プログラマとしての能力を上げるために毎日leetcodeに取り組み、自分なりの解き方を挙げていきたいと思います。

#### Leetcodeとは

[leetcode.com](https://leetcode.com/)
ソフトウェア開発職のコーディング面接の練習といえばこれらしいです。
合計1500問以上のコーデイング問題が投稿されていて、実際の面接でも同じ問題が出されることは多いらしいとのことです。

golang入門+アルゴリズム脳の強化のためにgoとPythonで解いていこうと思います。(Pythonは弱弱だが経験あり)

#### 13問目(問題58)

#### 58. Length of Last Word

#### 問題内容

> Given a string `s` consists of some words separated by spaces, return *the length of the last word

元記事を表示

2020年,Go言語でお世話になったライブラリ/検討したけど導入しなかったライブラリ

この記事は[Wanoグループ Advent Calendar 2020](https://qiita.com/advent-calendar/2020/wano-group)1日目の記事になります。一年早いですね。コロナやリモートワークもあってテンション的に埋まるかどうなのかー。

~~いきなりネタもないので転用できそうなフォーマットで雑多に記事を書きます。~~

本記事では年末っぽく,2020年に自分が使ったGo言語ライブラリ関連のよかったものを一括で振り返えろうかと思います。

* お世話になったライブラリ
* あんまり使わなくなった/検討したけど落ちたライブラリ

この2つの観点で、あまりまとめずつらつら書きました。
単なるライブラリの話題でも、**選定がわかれば問題意識や施策が振り返えれるって気もする**ので、いい機会かなーと思います。

# 1.2020年、お世話になったライブラリ

## Go Generate系
愚直な筋肉の使いどころは考えようってのが2020の施策として多かったので、めんどくさいものをなんとかしてくれるgo generate周りはお世話になりまし

元記事を表示

なんでGo?

書くことが思い浮かばず、「Qiitaだしポエムでもいいか」と開き直ったらこんな内容になってました。

# 「なぜGoを使うのか?」
3年ほど前、私は「新しい言語に触れてみたい」という単純な理由からGoを書き始めました。私の周りには優秀な人が多く、そういった人々がRustやHaskellといった言語にのめり込んでいく中で私は一人Goの沼へと足を踏み入れました。実際に書き始めてみると周囲から「なんでGo?」と聞かれる機会がそれなりにありました。そして私はその質問に満足な回答を持ち合わせていませんでした。

# Goは面白い言語ではない
Goについて話をする上で避けて通れない話題が仕様の小ささです。Goが採用している言語機能の数は非常に少ないです。このことはGoの[言語仕様](https://golang.org/ref/spec)がペライチのWebページに収まっていることからも明らかです。印刷してもA4 110ページに収まります。比較対象として[C++17のWorking Draft](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2

元記事を表示

初学者向け Go言語(Golang)の変数宣言*数値型

#はじめに
メモ書きです。
初歩中の初歩ですのでGoを始めたての方の助力になればと思います。

##変数宣言1

####整数型
整数型のnumを宣言します。
変数は以下のように宣言します。

“`
var [変数名][データ型]
“`

整数型は”int”を型に用います。

“`Go
package main

import (
“fmt”
)

func main() {
var num int
num = 1

fmt.Println(num)
}
“`
実行結果

“`
PS C:\pg\Go\study> go run sample.go
1
“`

int型でデータのサイズを決めることができます。
サイズを指定しなかった場合はOSやCPUに依存した数値となります。

“`
int8  //8bit min~max -128~127
int16 //16bit min~max -32768~32767
int32 //32bit min~max -2147483648~2147483647
int64 //64bit min~max -92

元記事を表示

Go言語で作成した実行ファイルをEC2でデーモンとして実行する

# 概要
Go言語でbuildした実行ファイルをEC2上に配置しdeamon化します。
そうして、EC2の起動時に自動的にGoでビルドしたWebサーバを実行させます。

### 経緯
Go言語+GinでビルドしたWebサーバをEC2上で構築していたのですが、
EC2の起動時に自動実行されなかったのでいろいろと試した結果、デーモン化しinit.dで自動起動させました。

### 1 ビルドした実行ファイルのデーモン化
“`

ディレクトリ
/etc/systemd/system/サービス名.service

[Unit]
Description=説明文

[Service]
User=root
Group=root
WorkingDirectory=ディレクトリ
ExecStart=ディレクトリ/実行ファイル名
Restart=always
KillMode=process

[Install]
WantedBy=multi-user.target
“`

サービスの確認
> systemctl status サービス名.service
> systemctl start サービス名

元記事を表示

Gormとの破局、そしてFacebook/entとの出会い

# golangとの出会い

御岳山のミツバツツジが紫の花をつけはじめ高山でも徐々にコケモモやアヤメなどのいろとりどりの花が見て取れるようになった時期、RESTよりパフォーマンスの良いgRPCをチャレンジしようという流れでgRPC使うならサーバサイドは折角だしgolang使おうとなった辺りがgolangとの出会い。
散々他所でも言われていますが**golangくんは付き合ってみるとシンプルを売りにしている反面結構頑固な所が多く割と融通の効かない子です。**それ故にアプリケーション全体のアーキテクチャ設計で頭使う必要があり無茶な実装はlinterで弾きやすく**レビュアーにとっては優しくたまに不満はあるけれど全体としてみれば嫌いじゃないかな**という気持ちでここまで付き合いが続いています。
golangくん個人開発ではそこまで旨味なさそうだけど複数人の開発では使えば使うほど味が出てくるスルメみたいな子。golangはいいぞ。
なお本記事は本質部分ではない部分のerrorチェック処理等は全部カットしてあります。ご了承ください。

# Gormとの出会い

そんな**頑固一徹で素材の味を活か

元記事を表示

あまり知られていないGoのスライス/配列の初期化

## 初めに
先日、[こちらの動画](https://www.youtube.com/watch?v=elGjixFQLYE&t=1054s&ab_channel=mercaridevjp)で見たことがない配列の初期化をしていたので、それについてわかったことを解説してきます。

## 配列の初期化
動画のほうでは次のような配列宣言をしていました。

“`go
package main

var array = […]int{0, 4:1, 2, 1:1}

func main() {
println(len(array))
}
“`

一般的な配列やスライスの宣言は以下のパターンがあると思います

“`go
var slice1 = []int{1, 2, 3, 4}
var slice2 = make([]int, 1, 4)
var array1 = [10]int{1, 2, 3, 4}
var array2 = […]int{1, 2, 3, 4}
“`

これらはよく見かけるパターンですが、`{0, 4:1, 2, 1:1}`というのは見たことがなく、どう読

元記事を表示

HUGOでシンプルなドキュメントサイトをつくる

[エイチームフィナジー](https://finergy.a-tm.co.jp/)の[@Minasho](https://qiita.com/Minasho)です。
本記事は、[Ateam Finergy Inc. Advent Calendar 2020](https://qiita.com/advent-calendar/2020/ateam-finergy)の2日目に公開された記事です。

## はじめに
静的サイトジェネレーターHUGOを使って、ドキュメントサイト(wiki)を制作します。

はてなブログやWordPress等のCMS(Contens Management System)でもドキュメントサイトを作ることは可能です。
しかし、ブログ用CMSだとデザインの制約が大きいという問題があり、WordPressはサーバーとドメインを用意する必要があり、コストが発生します。

静的サイトジェネレーターであるHUGOは、学習コストはありますが、無料で利用できます。
[GitHub Pages](https://docs.github.com/ja/free-pro-team@l

元記事を表示

LeetCodeに毎日挑戦してみた 53. Maximum Subarray(Python、Go)

## はじめに

無料英単語サイト[E-tan](https://your-e-tan.com/)を運営中の@ishishowです。

プログラマとしての能力を上げるために毎日leetcodeに取り組み、自分なりの解き方を挙げていきたいと思います。

#### Leetcodeとは

[leetcode.com](https://leetcode.com/)
ソフトウェア開発職のコーディング面接の練習といえばこれらしいです。
合計1500問以上のコーデイング問題が投稿されていて、実際の面接でも同じ問題が出されることは多いらしいとのことです。

golang入門+アルゴリズム脳の強化のためにgoとPythonで解いていこうと思います。(Pythonは弱弱だが経験あり)

#### 12問目(問題53)

#### 53. Maximum Subarray

#### 問題内容

> Given an integer array `nums`, find the contiguous subarray (containing at least one number) which has

元記事を表示

LeetCodeに毎日挑戦してみた 38. Count and Say(Python、Go)

## はじめに

無料英単語サイト[E-tan](https://your-e-tan.com/)を運営中の@ishishowです。

プログラマとしての能力を上げるために毎日leetcodeに取り組み、自分なりの解き方を挙げていきたいと思います。

#### Leetcodeとは

[leetcode.com](https://leetcode.com/)
ソフトウェア開発職のコーディング面接の練習といえばこれらしいです。
合計1500問以上のコーデイング問題が投稿されていて、実際の面接でも同じ問題が出されることは多いらしいとのことです。

golang入門+アルゴリズム脳の強化のためにgoとPythonで解いていこうと思います。(Pythonは弱弱だが経験あり)

#### 11問目(問題38)

#### 38. Count and Say問題内容

> The **count-and-say** sequence is a sequence of digit strings defined by the recursive formula:
>
> – `count

元記事を表示

golangのコンストラクタでinterface型を返すようにする理由

調べたらいろいろ出てきたが、以下が一番しっくりきた

[golang]Interfaceのオススメの使い方

もし他の理由もあるよという方がいらしてれば、教えていただけると幸いです。

元記事を表示

OTHERカテゴリの最新記事