That's nice work-around! Thank you Jakob! 

Best regards,
:) Hein

On Wednesday, November 22, 2017 at 11:27:34 PM UTC-8, Jakob Borg wrote:
>
> A variable of type [][]Operation has that type and only that type. Your 
> Concurrent and Sequential types are convertible to []Operation, and this is 
> what happens in the assignment. 
>
> You can probably use interfaces to accomplish what you want.
>
> type Operator interface {
> Operations() []Operation
> }
>
> Make Concurrent and Sequential distinct types that both implement 
> Operations() []Operation. This can be as simple as
>
> type Concurrent []Operation
>
> func (c Concurrent) Operations() []Operation {
> return c
> }
>
> Make your top level thing an []Operator. Use type switching or further 
> interface methods as appropriate.
>
> //jb
>
> On 23 Nov 2017, at 00:39, Hein Meling <hein....@gmail.com <javascript:>> 
> wrote:
>
> I have code like this:
> type TestCase struct {
> Name        string
> Description string
> OrderOp     [][]Operation
> }
>
> type Concurrent []Operation
> type Sequential []Operation
>
> With the intent to do things like this:
> OrderOp: [][]Operation{
> Concurrent{
> {ID: "A", Name: "Read", ArgumentType: "ReadRequest", Value: ""},
> {ID: "B", Name: "Write", ArgumentType: "Value", Value: "7"},
> },
> Sequential{
> {ID: "C", Name: "Read", ArgumentType: "ReadRequest", Value: ""},
> {ID: "D", Name: "Write", ArgumentType: "Value", Value: "8"},
> },
> }
>
> However, it seems that the OrderOp array do not preserve the type 
> information, and I cannot use type assertion or reflect.TypeOf() to recover 
> the types Concurrent and Sequential, that I intended to. For a full 
> example, see link below.
>
> My question is: How can I best work around this problem??
>
> (Preferably without adding a separate field in a struct to discriminate 
> between concurrent and sequential.)
>
> https://github.com/selabhvl/cpnmbt/blob/master/rwregister/table_test.go
>
> Thanks,
> :) Hein
>
> -- 
> 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...@googlegroups.com <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
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.
For more options, visit https://groups.google.com/d/optout.

Reply via email to