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 装入该变量

要回复问题请先登录注册