標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

syscall は deprecated だったのかー

syscall - The Go Programming Language

Deprecated: this package is locked down. Callers should use the corresponding package in the golang.org/x/sys repository instead.

(雑な訳)非推奨:このパッケージ(syscall)は凍結(?)しとります。ユーザはかわりに golang.org/x/sys のレポジトリのうち、対応するパッケージを使うべき

マジすか!では、golang.org/x/sys/windows を見てみよう。

windows - GoDoc

The primary use of this package is inside other packages that provide a more portable interface to the system, such as "os", "time" and "net". Use those packages rather than this one if you can.

(雑な訳)このパッケージが主に使われているのは、"os""time""net"といった、システムに対してより移植性の高いインターフェイスを提供する他のパッケージの内部だ。もし可能なら、これを使うよりはそういった(汎用の)パッケージを使うべきだ。

Ok!完全に理解した(まったくわかっていない)


というわけで golang.org/x/sys/windows のマニュアルを眺めているが、自前で NewProc しなくても、あらかじめいろんな WindowsAPI が関数化されているのでいいな、これ。

たとえば、windows.GetConsoleScreenBufferInfoはコンソールバッファの情報を得る API だが、構造体(windows.ConsoleScreenBufferInfo)やハンドル(windows.Stdout/windows.Stderr)まで全部定義済みなり。

一方で、文字コード変換には MultiByteToWideChar (ANSIUnicode変換)はあるが、逆がない。あくまで golang のライブラリで使われているもの限定なので、網羅性はカオスのようだ。

また、文字列パラメータも、string ではなく、*uint16 になっているので、そのまま素で使うのはしんどい。*uint16string に変換するラッパーが作らんとね。

以上(別にオチはない)