小编Odi*_*sky的帖子

golang中的多维数组

来自使用数组(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)

go

5
推荐指数
1
解决办法
3539
查看次数

在 Golang 中将可变大小的 []byte 转换为 int64

我有一个将 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

1
推荐指数
1
解决办法
1万
查看次数

标签 统计

go ×2