【发布时间】:2020-07-25 20:42:44
【问题描述】:
尝试实现go map,代码如下:
package gomap
type Entry struct {
stockName string
stockValue float64
}
type Bucket []Entry
type Map [4]Bucket
type bucketElementPosition [4]int
var emptyPosition = bucketElementPosition{0, 0, 0, 0}
func Newmap() Map {
return Map{} // [(nil,0,0), (nil,0,0), (nil,0,0), (nil,0,0)]
}
func Insert(m []Map, key string, value float64) { // m is sliceofslices type
bucketNumber := (key[0] - 'A') / 7
if cap(m[bucketNumber]) == 0 { // first insert, so create the backing array
m[bucketNumber] = make([]Entry, 0, 100)
}
}
package main
import (
"fmt"
"github.com/myhub/cs61a/gomap"
)
func main() {
var stockData = gomap.Newmap()
gomap.Insert(stockData[:], "AAPL", 94.56)
}
m[bucketNumber] = make([]Entry, 0, 100) 给出错误:
cannot use make([]Entry, 0, 100) (type []Entry) as type Map in assignment
如何将stockData的切片头传递给Insert()函数?
【问题讨论】:
-
鉴于
v := expr声明了一个新的变量v,您希望在这里声明什么新变量?唯一的变量名是m。你想要一个全新的m吗? -
@torek 对不起,我的错,这是作业。查询已编辑
-
对数组进行切片会得到一个切片,其元素类型与数组元素类型相同。
标签: arrays dictionary go slice