未定义的矢量.新的

Osc*_*Ryz 1 vector undefined go

从这个问题

如何在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
Run Code Online (Sandbox Code Playgroud)

可能有什么问题?

pet*_*rSO 7

weekly.2011-10-18

容器/矢量包已被删除.切片更好. SliceTricks:如何用切片做矢量事件.

我修改了你的convertToLCD代码以获得更好的性能:5,745 ns/op与19,003 ns/op.

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))
}
Run Code Online (Sandbox Code Playgroud)

输出:

    _  _     _  _  _  _  _  _ 
  | _| _||_||_ |_   ||_||_|| |
  ||_  _|  | _||_|  ||_| _||_|
Run Code Online (Sandbox Code Playgroud)