The following code snippet was derived from the golang/sample_per/employee sample program in the ASN1C distribution:
package main import ( "employee/asn1gen" "encoding/hex" "fmt" "io/ioutil" "os" ) func main() { var pdu asn1gen.PersonnelRecord // populate PDU type variable to be encoded fillName(&pdu.Name, "John", "P", "Smith") pdu.Title = "Director" pdu.Number = 51 pdu.DateOfHire = "19710917" fillName(&pdu.NameOfSpouse, "Mary", "T", "Smith") // fill first child record var childInfo asn1gen.ChildInformation fillName(&childInfo.Name, "Ralph", "T", "Smith") childInfo.DateOfBirth = "19571111" pdu.Children = append(pdu.Children, childInfo) // fill second child record fillName(&childInfo.Name, "Susan", "B", "Jones") childInfo.DateOfBirth = "19590717" pdu.Children = append(pdu.Children, childInfo) // Marshal encodedData, err := asn1gen.Marshal(pdu) if err == nil { fmt.Printf("PersonnelRecord encoded successfully\n") fmt.Printf("%s\n", hex.Dump(encodedData)) err = ioutil.WriteFile("message.per", encodedData, 0777) } else { fmt.Printf("Encoding failed: %s\n", err) }