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

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

main.go

package main

import “fmt”
// 「math/rand」パッケージと「time」パッケージをインポートしてください
import “math/rand”
import “time”

func main() {
// 指定されたコードを貼り付けてください
rand.Seed(time.Now().Unix())

// for文を作成してください
for i:=1; i<=3; i++{ fmt.Printf("%d回目のおみくじ結果:",i) number := rand.Intn(6) switch number { case 0: fmt.Println("凶です") case 1, 2: fmt.Println("吉です") case 3, 4: fmt.Println("中吉です")

元記事を表示

Go Moduleの更新を公式ミラーに素早く反映させる

# はじめに
Go Moduleの作成方法については、既に多くの記事が書かれているので取り上げないことにしました。
ここではモジュールの更新をミラー(レジストリ)に反映させる方法について述べます。

https://pkg.go.dev/ で検索可能なGoのモジュールは公式のミラー兼プロキシサイトである https://proxy.golang.org/ 経由で取得されています。
自作のモジュールを更新したときなど、すぐに反映されない場合は、このミラー経由でモジュールを取得するリクエストを送ればいいようです。

# やり方

以下の2通りのやり方があります:

1. HTTPでGETリクエストを送る
例: `GET https://proxy.golang.org/example.com/my/module/@v/v1.0.0.info`
2. `GOPROXY=https://proxy.golang.org/` を指定して、module-aware[^1]な `go get` を行う
例: `GOPROXY=”https://proxy.golang.org” GO111M

元記事を表示

golangのgenericsでB+ Treeを書いてみた

2020/06/19時点での情報です。

# golangのgenerics

先日、golangのgenericsに進展が有りました。

https://blog.golang.org/generics-next-step

### contractは無くなりinterfaceでconstraintを指定するように変更

https://tenntenn.dev/ja/posts/contract-interface/
こちらのブログによると以前からcontractを無くすという話はあったようですね。

### [go2向けgo playground](https://go2goplay.golang.org) でgenericsが試せるように

お手軽なので、試しに書きたいという方におすすめ

### go2をgo1にコンパイルするツール

goのgitレポジトリのdev.go2goブランチからビルドしたgoバイナリを使用するとgo2をgo1にコンパイルできます。
そのまま実行することも可能です。

“` bash
# 実行
go tool go2go run x.go2

元記事を表示

まっさらなSSDにmint20betaをインストール

まず、editorなににしようかな?
この時間って、かなり至福な時間。

emacsとか、むかしのSSDもあるので、そこから.emacsを引っ張ってくれば
すぐに設定は終わると思いきや。。

まず、ちょうひさしぶりのosインストールから、さらにはeditor
時代が変わりすぎていた。

aptでとか思ったら、いまはsnapd? , flatpak?
なんじゃそれ?
なにげジェネレーションギャップを感じた

また、mintだけsnapdは、拒否られているさまw
あとからしらべてやっとわかったのだが、自分もsnapdのような文化はいやかもw
mintが拒否るのもしかたないというか、良い方向かもw

aptでなく、今回はgimpとemacsは、flatpakでいれてみた。

また、ここでジェネレーションギャップが。。
/usr/local/binあたりにemacsがあるのかな?と思ったら、
ちがうじゃんw

しかたないから、デスクトップにemacsをピンとめして、
そのファイルを見て、どこから起動してるかしらべるところからw

また、ここで、びっくりw
/usr/bin/flatpak そ

元記事を表示

Go言語でHelloWorldを実行しようとしたらエラーになった

# Hello world が出来なかった話
業務でGolangを使用する機会がありました。
本格的には触らなかったので、とりあえず自習しようとしました。

– とりあえず`hello.go`を作ってhello worldを表示しようとします。

“`sh
$ go run hello.go
exec: “C:\\Users\\xxxxx\\AppData\\Local\\Temp\\go-build929698758\\b001\\exe\\hello”: file does not exist
“`

ああ??なんだこれ?hello World で死ぬか?普通?ってなったわけです。

# 失敗した原因
とりあえず build だけやってみる

“`shell
xxxxx@xxx MSYS /c/Users/xxxxx/Documents/test/go
$ go build hello.go

xxxxx@xxx MSYS /c/Users/xxxxx/Documents/test/go
$ ls
hello hello.go
“`
– バイナリ?が windows のじ

元記事を表示

go修行8日目 Panicとか

## エラーハンドリング

“`golang

package main

import (
“fmt”
“log”
“os”
)

func main() {
file, err := os.Open(“./tt.go”)
if err != nil {
log.Fatalln(“Error”)
}
defer file.Close()
data := make([]byte, 100)
// errは上書きでinicializeしている
count, err := file.Read(data)
if err != nil {
log.Fatalln(“Error”)
}
fmt.Println(count, string(data))
}
“`

“`
2020/06/19 08:37:42 Error
“`

## パニック

– 例外エラーの中の例外
– 何をしたらいいかわからない状態なのでなるべくエラーハンドリングするとよい

“`golang

package main

import “fmt”

// DB接続パッケージ

元記事を表示

Vue.jsからaxiosでGoにパラメータ渡せなくてつまり続けたが、Echo導入したら即解決した

Vueで入力された値をJson形式でGoに渡して処理をさせたかった。
うまい感じに渡せず、詰まったがEcho導入したら即解決した。

## やりたいこと
– VueからPost(非同期)でパラメータを渡して、Goで処理をさせたい。
– とりあえず、Axiosで送信したparamsがGoで受け取れていることを確認したい。

## VueとAxios
あるボタン押下時にtestを実行して、data1とdata2をjson形式でpostする。
Goの処理結果をconsoleに表示する。

**axiosはpost時、以下のように渡せば自動的にjson形式にしてくれるらしい。**

“`ruby:vue.js(一部抜粋)