⚙️ A dependency injection toolkit based on Go 1.18+ Generics. This library implements the Dependency Injection design pattern. It may replace the uber/dig fantastic package in simple Go projects. samber/do uses Go 1.18+ generics and therefore offers a typesafe API. See also: samber/lo: A Lodash-style Go library based on Go 1.18+ Generics samber/mo: Monads based on Go 1.18+ Generics (Option, Result
Go 1.18 has been released and along with it comes long-awaited support for Generics! Generics are the most significant change to the language in years. They add a new dimension to what is otherwise a minimalist type system. From the very beginning, Golang has supported dynamic polymorphism via Interfaces. Generics now provide static polymorphism to Golang. Here at DoltHub, we're big fans of Golang
vz provides the power of the Apple Virtualization.framework in Go. Put here is block quote of overreview which is written what is Virtualization.framework from the document. The Virtualization framework provides high-level APIs for creating and managing virtual machines (VM) on Apple silicon and Intel-based Mac computers. Use this framework to boot and run macOS or Linux-based operating systems in
Go の reflect パッケージを使っていて、ときどき操作している変数型との比較のために error などのインターフェース型の reflect.Type がほしいことがあるのだけれど、これは reflect.TypeOf((*error)(nil)).Elem() のように書くことで得られる。つまり、 nil をほしい型のポインタ型に変換 それを reflect.TypeOf に渡してポインタ型の reflect.Type を取得し Elem() でポインタをデリファレンスしてできる基本型の reflect.Type を得る という流れ。 Go の公式パッケージではよく見かける書法。これを使うと、たとえば変数が error インターフェースを満たすかどうかの判定は package main import ( "errors" "fmt" "reflect" ) func main()
One day at work, we were discussing the Go programming language in our work chatroom. At one point, I commented on a co-worker's slide, saying something along the lines of: "I think that's like stage three in the seven stages of becoming a Go programmer." Naturally, my co-workers wanted to know the rest of the stages, so I briefly outlined them. Here, expanded with more context, are the seven stag
はてブでの炎上のさなか、”振り”と思われるコメントがあったので、今回はそれに乗っからせてもらって、僕がちょいちょい登場させているGo言語のマスコットgopher君をどうやって描いているか紹介したいと思います。 ※Gopherの原著作者はRenée French氏です。 [ad#top-1] それ以降はパワポで描画 2回目以降はパワポ上で描画しました。ブコメの中で「表情差分」ってあったけど、その通りで、顔の表情だけを作り変えています。見てお分かりかと思いますが、曲線と円しか使っていません。(あ、若干直線使ってるか) どんな風に描くかって言うと・・・ まず大事なのは輪郭です。キャラクターの顔はほぼ輪郭で決まると言っていいでしょう。 30年以上前、中学生時代にキン肉マンの絵を描かせたら学年一と(自分で)言われていた僕が言うから間違いありません。みんな目や口の描画に心血を注ぎますが実は誤りです。重
はじめに GoはSSHサーバを書くのもかんたんです。ほとんどの場合、あなたのSSHサーバはユーザからのコマンド入力を受け付けるものでしょう。その場合、キー入力の列を文字列に変換するラインエディタと呼ばれるものが必要になります。Goではgolang.org/x/crypto/ssh/terminalがそれです。 SSHサーバを書く SSHサーバを書きましょう。GoでSSHサーバを書くにはgolang.org/x/crypto/sshを使います。 ここでは例として入力行を送り返すだけの単純なSSHサーバを考えます。120行ほどあるので、読み飛ばしてもらってかまいません。重要なポイントは以下の3点だけです。 プロンプトを表示する w.WriteString(prompt) ユーザの入力行を受け取る l, _, err := r.ReadLine() 入力行を送り返す w.WriteString(
はじめに 11月末に何故かアドベントカレンダーの一日目が空いていたので急遽この記事を作成することになりました。急いで書いたので不備などありましたらすみません。 新しい職場に転職後、業務としては初めてGoでWebアプリケーションを作成しました。 スクラッチで書かせてもらえたので、試行錯誤しながら一通り組むことができました。 また経験豊富な同僚からもアドバイスいただいたこともあり、 かなりGoのWebアプリの組み方について知見がたまりました。 そこで、MVCアプリケーションを組む上でどのような構成にしたらよいかについて、 特にコントローラ層を中心に自分の考えを紹介したいと思います。 MVCの設計 元々Rails等を書いていたので所謂WebのMVC(Model2)をベースに考えます。 View 書いたWebアプリケーションはAPIサーバだったので、実はあまりここについて出せる知見はありません。
2016年10月21日に開催されたネットワーク関連のイベント「ONIC Japan 2016」で、HASH-SET 代表取締役の石黒邦宏氏(写真1)は新しいルーティングソフトウエア「Zebra 2.0」を開発中であることを明らかにした。同氏が開発した「GNU Zebra」およびその派生ソフトウエアである「Quagga」は、オープンソースのルーティングソフトウエアとして広く使われている。Zebra 2.0は、米グーグルが開発したプログラミング言語「Go」を採用し、マルチスレッドに対応したのが特徴。2017年には公開したいとする。 同氏がZebraの開発を始めたのは1996年。当時のネットワークソフトウエアはモノリシックな(=一体型の)構造を持つものが多かった。それに対し、Zebraはマルチプロセスで、各プロトコルを処理するモジュールを独立したプロセスとして実装するという、当時としては先進的な
The more you move to the left, the more low-level the code becomes (“put that byte on the wire on port 80…”), the more you move to the right, the more high-level it becomes (“add item to order…”). Implementing the architecture The domain We will first create the domain layer. As said, our application and its use cases will be fully working, but it won’t be a complete shop. Therefore, the code that
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く