- 1. GoのExcelizeでExcelのセル値読み取り・R1C1形式の変換
- 2. Goでコンソールアプリのexeファイルを実行する
- 3. C, C++ユーザのためのGo言語 型編
- 4. Golang 用デバッガ delve のコマンド紹介
- 5. sqlite3-Mac
- 6. [Go] 並行処理を30分で理解?
- 7. Dockerで開発環境構築(GIN(GO)+Air)
- 8. Goでポインタを使うのか値を使うのかで迷ったこと
- 9. 【個人開発】初心者がもんたの森というな無料画像サイトを作った話
- 10. わたしとゴリラとジンと
- 11. AWS+Lambda+API+GOでオウム返しLine Bot
- 12. GoとReactでAPI通信
- 13. [翻訳転載] Golang Tip #5: メソッドチェーン
- 14. [翻訳転載] Golang Tip #4: 配列をスライスにパースする
- 15. [翻訳転載] Golang Tip #3: パフォーマンスを考慮したスライスの初期化
- 16. [翻訳転載] Golang Tip #1: 1行のコードで関数の実行時間を計測する
- 17. Ubuntuでaptを用いずGoインストール
- 18. [翻訳転載] Golang Tip #2: Golang Tips #2: マルチステージdefer
- 19. HugoでWEBサイトを秒で構築する
- 20. なぜGo言語のマスコットはGopherなのか
GoのExcelizeでExcelのセル値読み取り・R1C1形式の変換
[前回の記事](https://qiita.com/te-k/items/cbde3a34577eb6c84f26)の続きで、`.xlsx`に変換したExcelファイルを操作してみます。
ライブラリには、[Excelize](https://github.com/qax-os/excelize)を使います。
“`bash
go get github.com/xuri/excelize/v2
“`## Excelの指定セルの値を読み取る
`Excelize`の機能を使って、最初のシート
“`go
package mainimport (
“fmt”“github.com/xuri/excelize/v2”
)func main() {
path := “sample.xlsx”// Excelで操作
f, err := excelize.OpenFile(path)
if err != nil {
fmt.Println(“error opening excel file: %w”, err)
}
Goでコンソールアプリのexeファイルを実行する
前回、[C#でExcelの.xls形式を.xlsx形式に変換](https://qiita.com/te-k/items/902cdded0793acb58586)する`exe`ファイルを作ったので、それをGo言語で呼び出してみます。
C#でビルドした実行ファイルは、以下のように配置しました。
“`
C:.
│ go.mod
│ main.go
│
└─net6.0
ExcelConverter.deps.json
ExcelConverter.dll
ExcelConverter.exe
ExcelConverter.pdb
ExcelConverter.runtimeconfig.json
“``Go`の`os/exec`を使って`exe`を呼び出します。
“`go
package mainimport (
“fmt”
“os/exec”
)func main() {
exePath := “./net6.0/ExcelConverter.exe”arg1 := “
C, C++ユーザのためのGo言語 型編
#### 宣言のしかた
– “`go
// 基本
var value int
// まとめて宣言
var (
value int
text string
)
// 宣言と初期化を同時に行う
value := 8 // valueはint型に
test := “hello” // valueはstring型に
“`#### ポインタ
– 概要:
– C言語と基本的に同様(&、*など)
– C++のような参照渡しは無い
– 例:
“`go
var num *int
num = new(int) // まとめて`num := new(int)`でも勿論可
*num = 10
fmt.Println(num)
fmt.Println(*num)// 結果
0xc0000140a0
10
“`#### 構造体とインターフェース
– 概要:
– 構
Golang 用デバッガ delve のコマンド紹介
Golang 用のデバッガ _delve_ についてお話します。
# What is delve
_[delve](https://github.com/go-delve/delve)_ とは、Golang 用のデバッガです。
_Golang_ で作成したアプリケーションに何か不具合があったときに利用する便利ツールです。– nil ポインタ panic が発生したのが `FindBy()` っぽいんだけど 、実行したとき変数に何がセットされているのか知りたい
– `Execute()` 関数が呼ばれるまでにどういう経路をたどったのか知りたいといったときにその問題の解決に資するものです。
C 言語でコンパイルした実行ファイルをデバッグする際に _[gdb](https://ja.wikipedia.org/wiki/GNU%E3%83%87%E3%83%90%E3%83%83%E3%82%AC)_ を使ったことがある人、ただの _Golang_ 用の _gdb_ です。
コマンド一覧だけ見て読了していただいて構いません。# How to install
Check
sqlite3-Mac
「前提」
Udemyの講座を学習中の初学者が何故?そうなるのか説明のない講義で分からなかった点をchat GPTやGoogle検索で模索した回答になります。ご了承下さい
_______________________________________________________SQLiteをインストールする手順は、使用しているオペレーティングシステムによって異なりますが、一般的な方法を以下に示します。
1. Linux (Ubuntuを例として),Windowsは省きます(?)
2. macOS
macOSには通常、SQLiteがプリインストールされています。ターミナルでsqlite3コマンドを実行して、SQLiteシェルを開始できます。
※既にインストールされている場合、☑️までスキップ“`
aqlite3
//sqlite3 インストール確認
sqlite> .exit
//sqlite3 を抜ける
“`
_____________① Homebrew(brew)のインストール:
ターミナルに次のコマンドを入力して、Homebrewをインストールします
[Go] 並行処理を30分で理解?
# Goroutinesってなに?
[educative](https://www.educative.io/answers/what-is-a-goroutine)には、以下のように書いてあります。
>ゴルーチンとは、Goプログラミング言語における軽量の実行スレッドであり、プログラムの他の部分と同時に実行される関数です。
ゴルーチンは、従来のスレッドと比較すると、ゴルーチンを作成するオーバーヘッドが非常に小さいため、驚くほど安価です。そのため、Goでは並行プログラミングに広く使われています。
関数をgoroutineとして呼び出すには、goキーワードを使用します。なるほど、わからん。まぁとりあえず、 **同時に実行される** ということですね。
# コードのテンプレート
2つの関数 **`heyko1()`** と **`heyko2()`** が同時に実行される(並行処理される)ための関数 **`main()`** を作成します。goroutinesを呼び出すときには、基本的には呼び出すところで関数の前に`go`をつけることで並行処理として利用できます。これだけ
Dockerで開発環境構築(GIN(GO)+Air)
# はじめに
初めまして!
エンジニアになって数年、今まで本を読むだけでしたが、もっとプライベートで楽しみながら成長したい!自分が学んだ足跡を残していきたい!と思い記事をかきました!
最終的には自在に開発できるようになりたいと思っています。:triumph:
いろいろな記事を参考にさせてもらっています。:bow_tone2:
その中でもこれってどういう意味?とかつまづいたところを念入りに書いていこうかと思います。:fist:# 今回の目的
友人と進めているアプリ開発でGINを使おうって話が上がりました!折角だからDockerで立ち上げたろう、と思ったのでイチからどう進めていったか書いていきます!# 作成した環境
https://github.com/takizawa0548/sample-gin# 使用したものや事前準備
・Macbook Pro
・GIN(GO)
・Air
・Docker# 主に参考にさせていただいた記事
https://go.dev/doc/tutorial/getting-startedhttps://gin-gonic.com/ja/doc
Goでポインタを使うのか値を使うのかで迷ったこと
## はじめに
タイトルの通りです。
実際の業務の中で、ポインタの使いをなんとなくでやってたなとおもい、まとめてみました。
また、ケースの紹介の箇所はプロジェクトのルールや方針等もあると思うので、
あくまで私の理解と私の経験だと理解してください。## ポインタって?
ポインタはメモリのアドレスを指します。
ポインタは「値がどこにあるのか」を示すもので、値自体ではありません。
Go言語では以下のようにポインタを使用できます。
“`go
package mainimport “fmt”
type Fruits struct {
Name string
Color string
}func main() {
// Fruitsをポインタ型でappleに使用する
apple := &Fruits{
Name: “りんご”,
Color: “red”,
}fmt.Printf(“apple :%+v\n”, apple)
fmt.Printf(“appleに格納されているアドレス :%p\n”, apple)
}
“`
実行結果“`
app
【個人開発】初心者がもんたの森というな無料画像サイトを作った話
はじめまして!もんたです。
最近、趣味で作った『**もんたの森**』っていう無料で画像を保存したりコピーしたりできるサイトを作ったので、学んだことのアウトプットとしていろいろ話していきます!
初心者の人がこの記事見て個人開発にチャレンジしてもらえればなと思います!
あ、そういえばいろいろやらせてもろてます。
よかったら覗いてみてあげてください。**【最近始めたnote】**
趣味で読んだ本について書いてますhttps://note.com/kadota0706
**【あまり使っていないX(Twitter)】**
描いた絵をシェアしたりしてます# 今回作ったやつ
https://montanomori.com/![vpd3o-h3ckx.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2038763/e0aee1ad-7a93-f337-df96-fde8acbb919e.gif)
# 背景
時は
わたしとゴリラとジンと
—
わたしとゴリラとジンと
—**ゴリラ・ゴリラ・ゴリラ**
エンジニアはB型が多いらしいです。
ゴリラは全員B型らしいです。
つまりゴリラはエンジニアってこと?
エンジニアがゴリラってこと?
ゴリラとエンジニアの間をとって
ゴジラにしましょう(謎提案)
**目次**
– [1. gorillaとは何か](#1-gorillaとは何か)
– [2. gorillaとginの違い](#2-gorillaとginの違い)
– [3. おわりに](#3-おわりに)## 1. gorillaとは何か
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493200/9b09366c-7472-7e6a-c0a3-94e747922be0.png)
[Gorilla, the golang web toolkit](https://gorilla.github.io/)
ゴリラは、霊長目ヒト科ゴリラ属
AWS+Lambda+API+GOでオウム返しLine Bot
# はじめに
– 「AWSとGoを勉強したい!」ということで、オウム返しをするLine Botを作成しようと思いました。
– AWSを使ったサーバーレスの基本の勉強にもなってよかったです!# 目標
– 以下の感じでオウム返ししてくれるbotを作成します。
![oumu_kansei.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3525798/a1e1c91b-42f7-49c5-9445-6436b0eeb809.png)# 全体の構造
– Lineにメッセージを送ると、LINEプラットフォームは設定されたWebhook URLに対してPOSTリクエストを送信する。
– API Gatewayは、このリクエストをトリガーにLambda関数を実行する。
– Lambda関数はGo言語で書かれたコードを実行する。![line_bot_aws_oumu.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com
GoとReactでAPI通信
## 目的
前回、GoとReact環境をdockerで構築
https://qiita.com/zukka/items/5a6831bef702d8c910e0次は、フロント側のReact側からGoのAPIを呼び出して出力されたテキストをフロントに表示することを目標に。
## GoでAPIを構築
### webフレームワークGinを使う
GinはGo言語ベースのWebアプリケーションフレームワーク
軽量かつ実行速度が速いということが特徴https://gin-gonic.com/ja/
### インストール
go-sampleというモジュール名で初期する
go mod init は新しいGoモジュールを初期化するためのコマンド“`sh
docker-compose run –rm go sh -c ‘go mod init go-sample’
“`WEBフレームワークのginを取得する
“`sh
docker-compose run –rm go sh -c ‘go get -u github.com/gin-gonic/gin’
“`#
[翻訳転載] Golang Tip #5: メソッドチェーン
# はじめに
https://qiita.com/a10a/items/5063899c9f4a3bf4a2f2
本記事は以下のツイートの翻訳転載です。
https://x.com/func25/status/1728354658673135697?s=20
メソッドチェーンについての内容になります。
# メソッドチェーン
メソッドを定義する場合、レシーバをそのまま返してください。
![image](https://pbs.twimg.com/media/F_xXycNbIAEeZXb?format=jpg&name=medium)
これはメソッドチェーンとして知られています。
複数のメソッドを流れるように連続して呼び出すことができる方法を実現することができ、クリーンで効率的なコードを生み出すことができます。![image](https://pbs.twimg.com/media/F_xZWsXbUAArmOe?format=jpg&name=medium)
# おわりに
個人の感想ですが、メソッドチェーンを設計できていると「お、できるやつだ」ってなります。
[翻訳転載] Golang Tip #4: 配列をスライスにパースする
# はじめに
https://qiita.com/a10a/items/5063899c9f4a3bf4a2f2
本記事は以下のツイートの翻訳転載です。
https://x.com/func25/status/1727651590667158013?s=20
スライスを配列にパースする方法についての内容になります。
(記事タイトルは転載元Post(`Parse an Array into a Slice`)より)# 配列をスライスにパースする
`copy()`を検討しますよね。
![image](https://pbs.twimg.com/media/F_nWt6qawAA1dkl?format=jpg&name=medium)
しかし、これは冗長です。
もしプロジェクトがGo 1.20にアップデートされていれば、より簡単にパースすることができます。
他の型のパース(例えば`int`から`int32`)と同様です。![image](https://pbs.twimg.com/media/F_nXliRaoAAAgLk?format=jpg&name=medium
[翻訳転載] Golang Tip #3: パフォーマンスを考慮したスライスの初期化
# はじめに
https://qiita.com/a10a/items/5063899c9f4a3bf4a2f2
本記事は以下のツイートの翻訳転載です。
https://x.com/func25/status/1727362895514943975?s=20
スライスの初期化についての内容になります。
# パフォーマンスを重視したスライスの初期化[^1]
[^1]: `pre-allocation`
なぜパフォーマンスを考慮する必要があるのかについては次のPostを参照してください。
https://x.com/func25/status/1727363227749961777?s=20
以前は、`make(a, 10)` を使って初期化していました。
が、結果的に先頭に意図しないゼロを大量に含んでしまう`append()`(画像参照)を頻繁に手癖で書いてしまっていました。
これを避けるために、現在ではより効果的な初期化の方法である `make(a, 0, 10)` を使うようにしています。
![image](https://pbs.twimg.com/medi
[翻訳転載] Golang Tip #1: 1行のコードで関数の実行時間を計測する
# はじめに
https://qiita.com/a10a/items/5063899c9f4a3bf4a2f2
本記事は以下のツイートの翻訳転載です。
https://x.com/func25/status/1725431804667244715?s=20
[Tip #2のマルチステージdefer](https://qiita.com/a10a/items/890dee753883decbfd42)を使用する方が良いと思う。
このPostをした後に改善版としてTip #2をPostしたのかもしれない
# Golang #1: 1行のコードで関数の実行時間を計測する
![image](https://pbs.twimg.com/media/F_H3DlDasAA_9SH?format=jpg&name=medium)
Ubuntuでaptを用いずGoインストール
[CircleCIのcimg-go](https://github.com/CircleCI-Public/cimg-go/blob/main/1.22/Dockerfile)や、公式の[インストール手順](https://go.dev/doc/install)を参考に作成。
Install:
“`sh
## バージョン情報を記載
$ GO_VER=”1.22.0″
$ ARCH=”amd64″## ダウンロード
$ curl -sSL “https://go.dev/dl/go${GO_VER}.linux-${ARCH}.tar.gz” | sudo tar -xz -C /usr/local/## PATHを通す
$ echo ‘export PATH=$PATH:/usr/local/go/bin’ >> ~/.bashrc
$ echo ‘export PATH=”$(go env GOPATH)/bin:$PATH”‘ >> ~/.bashrc$ source ~/.bashrc
## 動作確認
$ go version
go version go1.
[翻訳転載] Golang Tip #2: Golang Tips #2: マルチステージdefer
# はじめに
https://qiita.com/a10a/items/5063899c9f4a3bf4a2f2
本記事は以下のツイートの翻訳転載です。
https://x.com/func25/status/1726279577327342009?s=20
`defer`を工夫すると呼び出し時とdefer時(これをなんて言うかわからない)の処理を1つの関数で書くことができる、という内容になります。
個人的にはなるほど確かに賢いな、と思う反面、メインの処理で`defer`を見た時に考慮すべきことが増えそうなので、濫用すべきではないかと思いました。
後続のPostに投げられている実行時間計測では便利のかも、と思いつつ、計測開始タイミングは指定できる一方計測終了タイミングは`defer`のタイミングでしかないので使いづらいのでは、と思ったり。
![image](https://pbs.twimg.com/media/F_T6MCQaUAAEHN9?format=jpg&name=medium)
# Golang Tips #2: マルチステージdefer
`defer`だ
HugoでWEBサイトを秒で構築する
# Hugoとは
https://gohugo.io/
ウェブサイトを構築するための世界最速のフレームワーク。
[Hugo](https://github.com/gohugoio/hugo) はGoのプロジェクトの中で、6番目にスターが多いプロジェクトである。テーマなど静的サイトのカスタマイズが、簡単に行うことができる。# インストール
https://gohugo.io/installation/ で各々の環境に合ったものをダウンロードできる。
Macの場合だとbrewで以下のようにダウンロードできる。
“`
brew install hugo
“`# サイトの作成
プロジェクトを作成する。
“`shell-session
$ hugo new site mysite
“`すると、以下のようなmysiteディレクトリが作られる。
“`
mysite
├── archetypes
│ └── default.md
├── assets
├── content
├── data
├── hugo.toml
├── i18n
├── layou
なぜGo言語のマスコットはGopherなのか
—
なぜGo言語のマスコットはGopherなのか
—**ネズミ**
青いネズミって
青い猫のドラえもんとなんか対比されてそうですよね。
Gopher君にも悲しい過去があるのかも……。
**目次**
– [1. Gopherの起源](#1-gopherの起源)
– [2. ミネソタ大学とGopher](#2-ミネソタ大学とgopher)
– [3. おわりに](#3-おわりに)## 1. Gopherの起源
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493200/4b4800bd-18cc-a03b-cf51-66743bef5073.png)
designed by [Renée French](http://reneefrench.blogspot.jp/).**はじめに**
Go言語(通称Go)は、Googleによっ