タグ

ブックマーク / text.baldanders.info (12)

  • パッケージ外部からの呼び出しを禁止する Internal Packages

    (初出: そろそろ真面目に Golang 開発環境について考える — Internal Packages と Vendoring - Qiita) 「GOPATH 汚染問題」で言及しそこねたので,今回は軽く。 Internal Packages の仕組みは 1.4 から存在したが標準パッケージのみの適用だった。 1.5 からは GOPATH 配下のパッケージまで拡張される。 Go 1.4 “Internal” Packages 要するに internal フォルダ以下のパッケージは外部から参照できない。 例として net パッケージを挙げてみる。 net パッケージのソースコードの構成は以下のようになっている。 C:\Go\src\net> tree . C:\GO\SRC\NET ├─http │ ├─cgi │ │ └─testdata │ ├─cookiejar │ ├─fcgi │

    パッケージ外部からの呼び出しを禁止する Internal Packages
  • Go 言語の日付処理

    今回は日付処理の話。 特にフォーマットの定義の仕方はよく忘れるので覚え書きとして記しておく。 Go 言語で日付処理を行うには time パッケージを使う。 よく使う型としては time.Time time.Duration time.Location が挙げられるだろう。 time.Time は時刻を, time.Duration は2時点間の時間を,そして time.Location は地球上の時差を表す型である。 たとえば package main import ( "fmt" "os" "time" ) func main() { tz, err := time.LoadLocation("Asia/Tokyo") if err != nil { fmt.Fprintln(os.Stderr, err) return } tm := time.Date(2006, 1, 2, 15,

    Go 言語の日付処理
  • 配列と Slice

    以下の記事を見て思わず膝を打った。 Goのarrayとsliceを理解するときがきた - Qiita なるほど! こういう風に説明すればいいのか。 というわけで,私も便乗してみる。 あくまでも私のための覚え書きである。 配列は常に「値」である まずはこんなコードを書いてみる。 package main import "fmt" type Array4 [4]int8 func main() { ary := Array4{0, 1, 2, 3} fmt.Printf("ary = %p\n", &ary) for i := 0; i < len(ary); i++ { fmt.Printf("%p: %v\n", &ary[i], ary[i]) } }

    配列と Slice
  • Entries in Golang

    『効率的な Go読書会 2回目 (in remark, 2024-05-18) #book #engineering #golang Chromebook を導入する 7 — VS Code の導入 (in remark, 2024-05-12) #chromebook #golang #linux #vscode Chromebook を導入する 6 — Git & Go コンパイラ (in remark, 2024-05-06) #chromebook #git #gnupg #golang #linux #openssh 性能とはなにか【『効率的な Go読書会 初回】 (in remark, 2024-04-21) #book #engineering #golang Go 1.22.2 のリリース【セキュリティ・アップデート】 (in release, 2024-04-06)

    Entries in Golang
  • Struct タグについて

    たとえば struct で構造化されている情報を特定のファイルやデータベースに出力したり,逆にファイルやデータベースの情報を struct に流し込みたい場合に struct の各フィールドに目印になる情報があると便利である。 この目印として機能するのが struct タグである1。 struct タグは以下のように記述する。 By convention, tag strings are a concatenation of optionally space-separated key:"value" pairs. Each key is a non-empty string consisting of non-control characters other than space (U+0020 ' '), quote (U+0022 '"'), and colon (U+003A ':

    Struct タグについて
  • 再帰呼び出しと関数テーブル

    今回は再帰呼び出しの話。 再帰呼び出しのサンプルとして典型的なのはフィボナッチ数かな。 フィボナッチ数の定義を愚直にコードにするとこんな感じになる。 package main import "fmt" func fibonacciNumber(n int) int { switch n { case 0: return 0 case 1: return 1 default: return fibonacciNumber(n-2) + fibonacciNumber(n-1) } } func main() { fmt.Println(fibonacciNumber(40)) } 一般に手続き型言語は再帰呼び出しに弱いと言われている(関数型のほうが有利)。 特に Go 言語の場合は goroutine に最適化を割り振っている関係で,関数呼び出しやその戻り1 のパフォーマンスが冷遇されている

    再帰呼び出しと関数テーブル
  • Go 言語と Unicode 正規化

    今回は少し目先を変えて「Unicode 正規化(normalization)」のお話。 2羽の「ペンギン」 まず「ペンギン」という文字列を思い浮かべてみる。 この文字列を Unicode のコードポイントで表すと以下のようになる。 ペ:U+30DA ン:U+30F3 ギ:U+30AE ン:U+30F3 ところでペンギンの「ペ」と「ギ」は半濁点および濁点を含む。 Unicode は「ペ」と「ギ」をそれぞれ2つの要素に分解できる。 ペ:U+30D8 + U+309A ン:U+30F3 ギ:U+30AD + U+3099 ン:U+30F3 U+309A および U+3099 はそれぞれ半濁点と濁点を表す「結合文字(combining character)」である。 「ヘ」や「キ」のような「基底文字(base character)」に結合文字を1つ以上1 付加した文字を「合成列(composite

    Go 言語と Unicode 正規化
  • プログラミング言語 Go

    Go 言語プログラミングに関する話題。 記事中に出てくるサンプル・コードについては,特に断りがない限り, CC0 相当での取り扱いで(つまり自由に再利用して)構わない。 なお書籍の『プログラミング言語Go』とは何の関係もないのであしからず。 (どちらかというとタイトルは『プログラミング言語C』からのパクリです) 記事の一覧 Go 1.22 における疑似乱数生成器 (2024-03-07) #golang #programming #random Zap と go-log を試す (2023-05-20) #golang #logger #programmingGo 1.20 の予習】複数 error を返す Unwrap メソッドについて (2023-01-25) #error #golang #programming 今年の恵方を取得する (2023-01-14) #calendar

    プログラミング言語 Go
  • GOPATH 汚染問題

    【注意 2018-09-26】 この問題はバージョン 1.11 からサポートされる「モジュール」機能によって解消可能です。 もはやこの記事の内容は古いものであり「こんな時代もあったね」と生暖かい気持ちで読んでいただければ幸いです。 (初出: そろそろ真面目に Golang 開発環境について考える — GOPATH 汚染問題 - Qiita,そろそろ真面目に Golang 開発環境について考える — Internal Packages と Vendoring - Qiita) go get コマンドはとても強力な機能で,私のように Windows と UNIX 系環境の間を渡り歩いてる身としては, make などの tool chain に大きく依存することなく, go get コマンドだけで repository の fetch からビルド・インストールまで出来てしまうのは非常にありがたい

    GOPATH 汚染問題
  • Go 言語に関するブックマーク

    主に公式情報や書籍情報について纏めていくことにした。 それ以外の情報は bookmarks セクションで扱っている。 なお,過去分はこちらに退避させている。 公式サイト The Go Programming Language git repositories (Google) git repositories (GitHub) : mirror go.dev Go.dev: a new hub for Go developers - The Go Blog A Tour of Go : 日語版 リリース情報 Go Turns 10 - The Go Blog Go 1.5 Released. Go 1.5 is released - The Go Blog Go 1.5 Release Notes - The Go Programming Language Go 1.4 “Interna

    Go 言語に関するブックマーク
  • ATOM で Go

    今回もまた横道に逸れてツールの話。 ATOM エディタで Go 言語のコーディング環境を整える。 環境を作る度に「どうだったっけ」とあちこちサイトを巡るので,覚え書きとしてまとめておく。 例によって Windows 環境を前提にしているので,他の環境の方は適当に脳内補完してください。

    ATOM で Go
  • 素数探索アルゴリズムで遊ぶ

    (初出: はじめての Go 言語 (on Windows) その2 - Qiita) Go 言語は公式のドキュメントがとても充実していて(ただしほぼ英語だけど),私のような初学者に易しい環境といえる。 Documentation - The Go Programming Language : 言語仕様に関するドキュメントはこちら(一部日語化されている) Packages - The Go Programming Language : 標準パッケージのドキュメントはこちら(一部日語化されている) とはいえ,コードが実際にどのように機能するかは書いてみないと分からない部分もある。 なので,今回からは実際にコードを書きながら言語の癖のようなものを調べていくことにする。 仕事に使うなら厳密な評価が必要だけど,今のところはそんな予定もないし,まずはテキトーで(笑) 早速,みんな大好き素数探索アル

    素数探索アルゴリズムで遊ぶ
  • 1