obviously as soon as I post the question I think of the answer myself.

I need to use pointers.

Sorry for the noise, it's working now.

On Thursday, March 27, 2025 at 3:31:29 PM UTC+1 natxo....@gmail.com wrote:

> hi,
>
> I am trying to parse he output of a command and not getting the desired 
> results.
>
> This is the sanitized output:
>
> Certificate
>        DN:             O=SUB,DOMAIN.TLD, CN=usernamej
>        Serial:         333333
>        Serialized id: 
>  
> pkcs11:model=PKCS%2315%20emulated;token=1;manufacturer=piv_II;serial=xxxxxxxxxxxxxxxxxxxxxx;id=%08
>
> Certificate
>        DN:             O=OTHER.DOMAIN.TLD, CN=yetanother0.other.domain.tld
>        Serial:         4444
>        Serialized id: 
>  
> pkcs11:model=PKCS%2315%20emulated;token=1;manufacturer=piv_II;serial=xxxxxxxxxxxxxxxxxxxx;id=%09
>
>
> Skipping the part to run the command etc, that works:
>
> ype ykcert struct {
> DN           string
> Serial       string
> Serializedid string
> }
>
> certnr := 0
> var certs = make(map[int]ykcert)
> var certregex = regexp.MustCompile(`^Certificate`)
> var dnregex = regexp.MustCompile(`\s+DN:\s+`)
> var serialregex = regexp.MustCompile(`\s+Serial:`)
> var serialidregex = regexp.MustCompile(`\s+Serialized id:`)
> scanner := bufio.NewScanner(r)
>
> go func() {
> for scanner.Scan() {
> if len(scanner.Text()) < 1 {
> continue
> }
> switch {
> case certregex.MatchString(scanner.Text()):
> certnr++
> case dnregex.MatchString(scanner.Text()):
> certs[certnr] = ykcert{DN: scanner.Text()}
> case serialregex.MatchString(scanner.Text()):
> certs[certnr] = ykcert{Serial: scanner.Text()}
> case serialidregex.MatchString(scanner.Text()):
> certs[certnr] = ykcert{Serializedid: scanner.Text()}
> }
> }
> done <- struct{}{}
> }()
>
> So I try to save the output in a map which is map[int]ykcert and while 
> scanning the text if I match the desired regex, I assign that to the struct 
> field.
>
> What happens is that only the last case is 'remembered', so the map gets 
> the correct number of elements, but the struct only gets filed with, in 
> this case, the serializedid field. The other fields are not there.
>
> How can I fill in the map elements fully?
>
> Thanks for your input.
>
> -- 
> regards,
> Natxo
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/443d59c4-7ecc-4218-88d5-4d9ad673a3b4n%40googlegroups.com.

Reply via email to