来自使用数组(PHP)的语言并且只有 3 天的 golang 经验,我如何使用 map(或切片,或组合)翻译多维数组分配
我在 PHP 中有这个代码: $set 是文档向量的集合(字符串 => 频率)。
我通常可以创建这样的发布统计信息:
$postinglist = array();
foreach ($set as $id=>$doc) {
foreach ($doc as $term => $value) {
if(!isset($postinglist[$term][$id])) {
$postinglist[$term][$id] = $value;
}
}
Run Code Online (Sandbox Code Playgroud)
所以它看起来像:
array (
'the' => array (
1 => 5,
2 => 10
),
'and' => array (
1 => 6,
3 => 7
)
)
Run Code Online (Sandbox Code Playgroud)
在构建我的语料库(只是所有文档中所有术语的数组)之后,我将为每个术语构建发布列表:
$terms = $this->getAllTerms();
foreach($terms as $term) {
$entry = new EntryStatistics();
foreach($postinglist[$term] as $id => $value) { …Run Code Online (Sandbox Code Playgroud) 我有一个将 int64 ([]int64) 切片转置为 int64 的方法,但我还没有找到一种方法来做到这一点。
package main
import "fmt"
import "bytes"
import "encoding/binary"
func main() {
var mySlice = []byte{0, 0, 0, 0, 0, 0, 0, 0, 0, 23}
data := binary.BigEndian.Uint64(mySlice)
fmt.Println(data)
var ret int64
buf := bytes.NewBuffer(mySlice)
binary.Read(buf, binary.BigEndian, ret)
fmt.Println(ret)
}
Run Code Online (Sandbox Code Playgroud)
我的方法从给定的大小(例如 make([]byte, 20))初始化 []byte,并且我的方法对给定的位和维度大小进行操作并将其交错(位操作):
因此,假设 []byte{0 0 0 0 0 0 0 0 0 23} 给出 23,而 [更多尾随零...,125,更多尾随零...] 是 500
我想我正在寻找更像java的BigInteger类的东西,它接受BigEndian中的[]byte(和signum)。
我试图(从 Java)移植的方法是这样的:
BigInteger toIndex(long... transposedIndex) {
byte[] b = new …Run Code Online (Sandbox Code Playgroud) go ×2