怎么获取一个类型为指定interface的变量的原struct的值?

package main

import (
    "fmt"
)

type testInterface interface {
    testMe()
}

type oriValue struct {
    val int
}

func (o oriValue) testMe() {
    //It work!
    //print 1 "I'm test interface"
    fmt.Println(o.val, "I'm test interface")
}

func main() {
    var v testInterface = &oriValue{
        val: 1,
    }
    v.testMe()
    //v.val undefined (type testInterface has no field or method val)
    fmt.Println(v.val)
}

v是一个类型为testInterface的变量,用oriValue为其赋值,其中oriValue实现了testMe方法
请问,怎么获取v.val的值?用testMe是可以成功获取,但是直接访问v.val,编译器就报错了,用什么方法可以在不改动interface和struct的情况下获取v.val的值?

共 1 个回复


leedstyh

v.(*oriValue).val

# 0