タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Golangに関するmslGtのブックマーク (13)

  • Writing Web Applications - The Go Programming Language

    Introduction Covered in this tutorial: Creating a data structure with load and save methods Using the net/http package to build web applications Using the html/template package to process HTML templates Using the regexp package to validate user input Using closures Assumed knowledge: Programming experience Understanding of basic web technologies (HTTP, HTML) Some UNIX/DOS command-line knowledge Ge

    Writing Web Applications - The Go Programming Language
    mslGt
    mslGt 2018/02/25
  • go - Project Hosting on Google Code

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    go - Project Hosting on Google Code
    mslGt
    mslGt 2018/02/21
  • GoのSliceもヤバイ - Qiita

    先日SwiftのArrayがヤバイという投稿を書きましたが(ただし、SwiftのArrayはすばらしく生まれかわりました)、実はGoのSliceでもまったく同じことが起きます。 GoのSliceのヤバイ挙動 次のコードはSwiftのArrayがヤバイで取り上げたコードをGoに書き換えたものです。結果はSwiftのときと同じです。 a := []int{11, 22, 33} // a == [11 22 33] b := a // b == [11 22 33] a[0] = 777 // b[0]も777になる a = append(a, 44) a[0] = 888 // b[0]は888にならない appendの結果をaに再代入してるから、そこでSliceの実体が変わってしまってるんだろうと思うかもしれません。しかし、少しだけ変更した次のコードでは、aに再代入しているにも関わらずaと

    GoのSliceもヤバイ - Qiita
    mslGt
    mslGt 2018/02/21
  • Go のスライスでハマッたところ - Block Rockin’ Codes

    intro 先日 GoのSliceもヤバイ - Qiita こんな記事をみて、別の挙動だけどスライスの内部を理解しきれていなかった頃のことを思い出した。 結構前に謎に思っていた挙動についての話。 以前この挙動を解説しようと思って、前提として書いたスライスの内部構造の記事が、 Go のスライスの内部実装 だったのですが、そっちを書き終わって満足してしまい、題を忘れていました。 この挙動は、先のブログで説明した内容がわかっていないと、なかなか理解できないかも。わかってしまえば簡単ですが。 やりたいのは、関数側でスライスを操作したときの呼び出し側での結果。 順を追ってみてみます。 配列を関数内で変更する 関数は値渡しで、配列はそれ自体が値なので、まるっとコピーされます。 以下の例は、戻り値で返さないと、呼出側は変化しません。 package main import ( "log" ) func

    mslGt
    mslGt 2018/02/21
  • Go のスライスの内部実装 - Block Rockin’ Codes

    History 14/05/09: Merge2 を修正しました。http://twitter.com/jbking/status/464659353945911297 Intro Go のスライスは、いわゆる LL 系の言語が持つ可変長配列の実装と似ています。 よって LL のような手軽な扱いをすることもできますが、その内部実装を知ることでより効率の良いメモリハンドリングができ、パフォーマンスを改善や、メモリーリークの防止などに繋がる可能性があります。 この辺は SWrap というライブラリを作りながら勉強したので、今回は、この Go のスライスの内部実装を解説します。 Go の配列 スライスを知るためには、まず配列について知っておく必要があります。 Go の配列は固定長のため、以下のように長さを指定して宣言します。 var arr [4]int func main() { arr =

    mslGt
    mslGt 2018/02/21
  • Arrays, slices (and strings): The mechanics of 'append' - The Go Programming Language

    Tips for writing clear, performant, and idiomatic Go code

    Arrays, slices (and strings): The mechanics of 'append' - The Go Programming Language
    mslGt
    mslGt 2018/02/21
  • Go Slices: usage and internals - The Go Programming Language

    Go’s arrays are values. An array variable denotes the entire array; it is not a pointer to the first array element (as would be the case in C). This means that when you assign or pass around an array value you will make a copy of its contents. (To avoid the copy you could pass a pointer to the array, but then that’s a pointer to an array, not an array.) One way to think about arrays is as a sort o

    Go Slices: usage and internals - The Go Programming Language
    mslGt
    mslGt 2018/02/20
  • Goならわかるシステムプログラミング

    Goで始める、すこし低レイヤのプログラミング入門。入出力、ネットワーク、メモリなど、現実の世界でプログラムが動くために必要な機能をプログラム言語Goを通して覗いてみよう。OSの機能とは何か、それをプログラミングでどう利用するのか、システムプログラミングの世界をプログラマの視点から眺めていく連載企画。 2017年06月21日 17時00分 プログラミング+ Go言語によるプログラマー視点のシステムプログラミング 第20回 Go言語とコンテナ 連載の最終回。この連載ではプログラムがコンピュータ上で動くときに何が起きているのかをGo言語のコードを通して覗いてきました。今回はその締めくくりとしてコンテナについて紹介します。 2017年06月07日 21時30分 プログラミング+ Go言語によるプログラマー視点のシステムプログラミング 第19回 Go言語のメモリ管理 ソフトウェアにとってメモリは不

    Goならわかるシステムプログラミング
    mslGt
    mslGt 2017/09/27
  • ʕ  ゚皿゚ ʔ GolangのWeb Application Frameworkを色々試してみてもいいかしら? - ( ꒪⌓꒪) ゆるよろ日記

    うちのメロンちゃんはLv.117です。 Golangで、簡単なWebアプリケーションをいくつかのフレームワークを用いて作成してみた。 サンプルアプリケーションは、こんな感じのPhotoギャラリーアプリケーションで、画像URLを入力すると追加される。 PureというCSSフレームワークのサンプルから拝借した。 Photo Gallery – Layout Examples – Pure ソースコードはGithubで公開している。 yuroyoro/golang_webapp_framework_samples · GitHub 今回試したのは、net/httpパッケージ、Martini、 Revel の3つ。 net/http編 まずは基net/http編。ソースコードはこちら。 http - The Go Programming Language net/httpパッケージでサーバーを

    ʕ  ゚皿゚ ʔ GolangのWeb Application Frameworkを色々試してみてもいいかしら? - ( ꒪⌓꒪) ゆるよろ日記
    mslGt
    mslGt 2017/04/03
  • net/httpで安全に静的ファイルを返す

    net/httpで静的ファイルを返すで、 http.ServeFileを使っていてアレ?と思ったのでちょっと詳しく調べてみました。 (http.FileServerを使うものだと思ってたため) 結論だけ先に書いておくと やはり、特に理由がなければhttp.FileServerを使ったほうが良さそう どうしてもhttp.ServeFileを使う場合は定数でパス指定をする 「自作パスルータを使っている」かつ「Go 1.6.1 未満を使っている」場合はとくに要注意 ディレクトリトラバーサル脆弱性 紹介されているのは以下のコードです。 http.HandleFunc("/static/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, r.URL.Path[1:]) }) しかし、参照先の「Go Golang

    mslGt
    mslGt 2017/04/03
  • Golangでの文字列・数値変換 - 小野マトペの納豆ペペロンチーノ日記

    覚えられなくて使うたびにググってしまうので、以後楽をするためにスニペットを記す。 パッケージ strconvパッケージを使う。 文字列 → 数値変換(パース) func Atoi(s string) (i int, err error) 文字列を10進数のint型にパースする。ParseInt(s, 10, 0)の省略形。 var i int i, _ = strconv.Atoi("255") fmt.Println(i) // => 255 func ParseBool(str string) (value bool, err error) 文字列をbool型にパースする。 var b bool b, _ = strconv.ParseBool("true") fmt.Println(b) // => true 受け付ける値は1, t, T, TRUE, true, True, 0,

    Golangでの文字列・数値変換 - 小野マトペの納豆ペペロンチーノ日記
    mslGt
    mslGt 2017/03/31
  • Big Sky :: golang の channel を使ったテクニックあれこれ

    golang の channel は他の言語に見ない独特のパラダイムを開発者に提供します。 単純にスレッド間でメッセージングをするだけでもC言語で書けばそこそこの量になったり、慣れていない人であればどう実装すればいいか分からないなんて事もあったと思います。しかし golanggoroutine/channel は、やっている内容の割にとても容易にスレッド間通信やキューイング、処理の受け待ち等を実装できる様になっています。尚、channel をどの様に適用したら良いかについては以下を参照下さい。 Big Sky :: Golang の channel の使い所 golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその grout... http://mat

    Big Sky :: golang の channel を使ったテクニックあれこれ
    mslGt
    mslGt 2017/03/30
  • Big Sky :: Golang の channel の使い所

    golang の特徴と言えば goroutine と channel ですが、その使いどころに悩む人もおられる様です。 goroutine は非同期に実行される処理、channel はその groutine と通信する為の仕組みと考えると分かりやすいです。 package main import ( "fmt" "time" ) func main() { task := make(chan string) taskquit := make(chan bool) workerquit := make(chan bool) go func() { loop: for { select { case <-taskquit: workerquit <- true break loop case job := <-task: fmt.Println(job) } } }() go func() {

    Big Sky :: Golang の channel の使い所
    mslGt
    mslGt 2017/03/30
  • 1