5

sscanf で文字列を処理している間、特定のフィールドを無視したいと考えています。

sscanf のマニュアルページによると

An optional '*' assignment-suppression character: scanf() reads input as directed by the conversion specification, but discards the input. No corresponding pointer argument is required, and this specification is not included in the count of successful assignments returned by scanf().

3番目のフィールドを無視するために、Golangでこれを使用しようとしています:

if c, err := fmt.Sscanf(str, " %s %d %*d %d ", &iface.Name, &iface.BTx, &iface.BytesRx); err != nil || c != 3 {

コンパイルは問題ありませんが、実行時に err が次のように設定されます。

bad verb %* for integer

Golang doco は %* 変換仕様について特に言及していませんが、次のように述べています。

Package fmt implements formatted I/O with functions analogous to C's printf and scanf.

%* が実装されていないことを示しているわけではないので、間違っていますか? それとも、静かに省略されただけですか?...しかし、なぜコンパイルするのでしょうか?

4

1 に答える 1