我目前正在嘗試 Go 并且遇到了上述錯(cuò)誤消息??纯唇涌?,它對(duì) float64 的實(shí)現(xiàn)和測(cè)試。界面:package intervalimport ( "errors" "fmt" "math")type Interval interface { Intersect(Y Interval) (Interval, error) // Intersection of X and Y, error 'nil' when empty}type floatInterval struct { a, b float64}func (fi floatInterval) Intersect(Y Interval) (Interval, error) { tmp := Y.(floatInterval) a_new, b_new := math.Max(fi.a, tmp.a), math.Min(fi.b, tmp.b) result := floatInterval{a_new, b_new} if result.Length() == 0 { return result, errors.New("Empty interval") } else { return result, nil }}測(cè)試:func intersect_test(t *testing.T, c testTuple) { got, _ := c.iv1.Intersect(c.iv2).(floatInterval) if (c.intersectWant.a != got.a) || (c.intersectWant.b != got.b) { t.Errorf("Expected: [%f, %f] \t Got: [%f, %f]", c.intersectWant.a, c.intersectWant.b, got.a, got.b) }}錯(cuò)誤發(fā)生在測(cè)試函數(shù)的第二行。我知道 intersect 返回兩個(gè)值:間隔和錯(cuò)誤值。但由于我將兩者都分配給我,got, _ := c.iv1.Intersect(c.iv2).(floatInterval)我認(rèn)為我是安全的。got, err := ...順便我也試過(guò)。這是由于我正在做的類型轉(zhuǎn)換.(floatInterval)嗎?
1 回答

慕妹3242003
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是因?yàn)轭愋蛿嘌灾恍枰粋€(gè)值。
改為這樣做:
gotInterval, _ := c.iv1.Intersect(c.iv2)
got := gotInterval.(floatInterval)
- 1 回答
- 0 關(guān)注
- 162 瀏覽
添加回答
舉報(bào)
0/150
提交
取消