下面这个例子只有用泛型才简洁

package main
import "debug/pe"

func dump32(hdr *pe.OptionalHeader32) {
  // 相同逻辑
}
func dump64(hdr *pe.OptionalHeader64) {
  // 相同逻辑
}
func main() {
  file,err := pe.Open("test.exe")
  if err == nil {
    hdr,ok := file.OptionalHeader.(*pe.OptionalHeader32)
    if ok {
      dump32(hdr)
    } else {
      hdr2 := file.OptionalHeader.(*pe.OptionalHeader64)
      dump64(hdr2)
    }
  }
}