1
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) } } 

Hello everybody! I want to create a function for cyclic rotation of an array of bytes, I take a simple function byte generator, and then try to rotate them byte-by-bye when I print - everything looks fine, but when I try to make an append(commented out 2 lines), I get Undefined с:

# command-line-arguments ./prepareKey.go:33:17: undefined: с

What's wrong!?? Forgive me if it was already there, poke me, I'm in a stupor from this! var c this global...

0

2 Answers 2

4

The problem is that the variable name and the identifier you use in append visually look the same, but they are different characters!

If you print their bytes :

fmt.Println([]byte("c")) // var b, c []byte fmt.Println([]byte("с")) // b = append(b, с...) 

Output is (try it on the Go Playground):

[99] [209 129] 

Fix: Delete that 'c' lookalike, and write a "normal" 'c' character.

Once you do it, the app compiles and runs fine. Try it on the Go Playground.

Sign up to request clarification or add additional context in comments.

2 Comments

Ha, it's a lowercase cyrillic "s"! codetable.net/hex/441 Good find.
indeed, I renamed the variable and it worked ... maybe I printed it on a different layout, but I honestly don't understand what happened, THANKS!
-1

I think you're missing an equals sign:

var b, c = []byte 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.