неопределенный вектор. Новый - PullRequest
1 голос
/ 20 марта 2012

Из этого вопроса

Как использовать (универсальный) вектор в go?

Я пытался создать новый вектор, но компилятор говорит, что он не определен:

$ 6g -V
6g version release.r60.3 9516
$ cat > vectest.go <<.
> package main
> 
> import vector "container/vector"
> import "fmt"
> 
> func main() {
>      vec := vector.New(0);
>      buf := make([]byte,10);
>      vec.Push(buf);
> 
>      for i := 0; i < vec.Len(); i++ {
>      el := vec.At(i).([]byte);
>      fmt.Print(el,"\n");
>      }
> }
> .
$ 6g vectest.go 
vectest.go:7: undefined: vector.New

Что может быть не так?

Ответы [ 2 ]

7 голосов
/ 20 марта 2012

weekly.2011-10-18

Контейнер / векторный пакет был удален. Ломтики лучше. SliceTricks: как делать векторные вещи с кусочками.

Я пересмотрел ваш convertToLCD код , чтобы повысить производительность: 5745 нс / операционный против 19 003 нс / операционный

package main

import (
    "fmt"
    "strconv"
)

const (
    lcdNumerals = `
 _     _  _     _  _  _  _  _ 
| |  | _| _||_||_ |_   ||_||_|
|_|  ||_  _|  | _||_|  ||_| _|
`
    lcdWidth   = 3
    lcdHeight  = 3
    lcdLineLen = (len(lcdNumerals) - 1) / lcdWidth
)

func convertToLCD(n int) string {
    digits := strconv.Itoa(n)
    displayLineLen := len(digits)*lcdWidth + 1
    display := make([]byte, displayLineLen*lcdHeight)
    for i, digit := range digits {
        iPos := i * lcdWidth
        digitPos := int(digit-'0') * lcdWidth
        for line := 0; line < lcdHeight; line++ {
            numeralPos := 1 + lcdLineLen*line + digitPos
            numeralLine := lcdNumerals[numeralPos : numeralPos+lcdWidth]
            displayPos := displayLineLen*line + iPos
            displayLine := display[displayPos : displayPos+lcdWidth]
            copy(displayLine, string(numeralLine))
            if i == len(digits)-1 {
                display[displayLineLen*(line+1)-1] = '\n'
            }
        }
    }
    return string(display)
}

func main() {
    fmt.Printf("%s\n", convertToLCD(1234567890))
}

Выход:

    _  _     _  _  _  _  _  _ 
  | _| _||_||_ |_   ||_||_|| |
  ||_  _|  | _||_|  ||_| _||_|
2 голосов
/ 20 марта 2012

Это правда, что вектора нет. Новое в r60.3, но вместо того, чтобы исправлять этот код, вы должны изучить новую функцию добавления.Это сделало ненужным векторный пакет, и фактически этот пакет был удален некоторое время назад из еженедельных выпусков.

...