golang 实现多态的赋值问题

package main

import (
    "fmt"
)

type TokenType uint16

type Token interface{
    Type() TokenType
    Lexeme() string
}

type Match struct{
    toktype TokenType
    lexeme string
}

func (m *Match)Type() TokenType{
    return m.toktype
}

func (m *Match)Lexeme() string{
    return m.lexeme
}

func main(){
    m := Match{16, "sixteen"}
    //t := map[int]Token{}
    //t[0] = &m
    //fmt.Println(t[0].Type())
    //fmt.Println(t[0].Lexeme())

    t :=Token{}
    t = &m
    fmt.Print(t.Type())
}

出现错误:

 invalid type for composite literal: Token

请问一下这是什么问题?

已邀请:

梁昊

赞同来自: zhangxxxww

若要建立一个“空的”(没有 dynamic value 的) interface 变量,可以这样

var t Token

t := (Token)(nil)

然后可以将符合条件的值作为 dynamic value 装入该变量

要回复问题请先登录注册