私はtime.Time
フィールドを数値のUnix時刻としてエンコードしたいので、たくさんの構造体があるので、それぞれの構造体にカスタムMarshalJSON関数を実装したくないです。時刻フィールドをUnix時刻として整列する
だから、私のようなタイプの別名を定義しようとした:
type Timestamp time.Time
そしてそうみたいにMarshalJSONを実装:
func (t Timestamp) MarshalJSON() ([]byte, error) {
return []byte(strconv.FormatInt(t.Unix(), 10)), nil
}
しかし、それは私にないt.Unix undefined (type Timestamp has no field or method Unix)
を与えます私には意味をなさないTimestamp
「継承」しないでください(間違った用語であることはわかっています)time.Time
のすべての機能はありますか?
また、私はそうのようなタイプのアサーションを使用してみました:
strconv.FormatInt(t.(time.Time).Unix(), 10)
しかし、それはまた、無効な型アサーション不満、失敗する:あなたが持って戻っtime.Time
にあなたのタイプを変換する必要がありinvalid type assertion: t.(time.Time) (non-interface type Timestamp on left)