未定义的全局是
Undefined global var
package main
import (
"crypto/rand"
"fmt"
)
var a = []byte{0, 0}
var b, c []byte
func gens(n int) ([]byte, error) {
b := make([]byte, n)
_, err := rand.Read(b)
// Note that err == nil only if we read len(b) bytes.
if err != nil {
return nil, err
}
return b, nil
}
func main() {
key, _ := gens(30)
fmt.Printf("len %d key \n%x\n", len(key), key)
for s := 1; s <= len(key); s++ {
b := make([]byte, len(key))
b = key[s:]
c = key[:s]
fmt.Printf("%d %x %x\n", s, b, c)
// b = append(b, с...)
// fmt.Printf("len %d key %x\n",len(d), d)
}
}
大家好!
我想创建一个字节数组循环旋转的函数,我采用了一个简单的函数字节生成器,然后尝试在打印时逐字节旋转它们 - 一切看起来都很好,但是当我尝试追加时(注释掉 2 行),我得到 Undefined с:
# 命令行参数
./prepareKey.go:33:17: 未定义: с
怎么了!??如果它已经存在,请原谅我,戳我,我因此昏迷了! var c 这个全局...
我认为你漏掉了一个等号:
var b, c = []byte
问题是你在append
中使用的变量名和标识符在视觉上看起来是一样的,但它们是不同的字符!
如果你打印他们的字节:
fmt.Println([]byte("c")) // var b, c []byte
fmt.Println([]byte("с")) // b = append(b, с...)
输出是(在 Go Playground 上尝试):
[99]
[209 129]
修复: 删除那个 'c'
相似的,然后写一个 "normal" 'c'
字符。
完成后,应用程序会编译并运行良好。在 Go Playground.
上试试
package main
import (
"crypto/rand"
"fmt"
)
var a = []byte{0, 0}
var b, c []byte
func gens(n int) ([]byte, error) {
b := make([]byte, n)
_, err := rand.Read(b)
// Note that err == nil only if we read len(b) bytes.
if err != nil {
return nil, err
}
return b, nil
}
func main() {
key, _ := gens(30)
fmt.Printf("len %d key \n%x\n", len(key), key)
for s := 1; s <= len(key); s++ {
b := make([]byte, len(key))
b = key[s:]
c = key[:s]
fmt.Printf("%d %x %x\n", s, b, c)
// b = append(b, с...)
// fmt.Printf("len %d key %x\n",len(d), d)
}
}
大家好! 我想创建一个字节数组循环旋转的函数,我采用了一个简单的函数字节生成器,然后尝试在打印时逐字节旋转它们 - 一切看起来都很好,但是当我尝试追加时(注释掉 2 行),我得到 Undefined с:
# 命令行参数 ./prepareKey.go:33:17: 未定义: с
怎么了!??如果它已经存在,请原谅我,戳我,我因此昏迷了! var c 这个全局...
我认为你漏掉了一个等号:
var b, c = []byte
问题是你在append
中使用的变量名和标识符在视觉上看起来是一样的,但它们是不同的字符!
如果你打印他们的字节:
fmt.Println([]byte("c")) // var b, c []byte
fmt.Println([]byte("с")) // b = append(b, с...)
输出是(在 Go Playground 上尝试):
[99]
[209 129]
修复: 删除那个 'c'
相似的,然后写一个 "normal" 'c'
字符。
完成后,应用程序会编译并运行良好。在 Go Playground.
上试试