Подтвердить что ты не робот

Голанг Почему эти две строки не равны?

Я скопировал и вставил эти две строки (один из Google Doc и один из терминала) - что происходит? И как я могу их очистить, чтобы они были такими же?

package main

import "fmt"

func main() {
    fmt.Println([]byte("f6f77482e4394a21815b7090bc0185b4"))
    fmt.Println([]byte("f6f77482­e439­4a21­815b­7090bc0185b4"))
}

Возврат:

[102 54 102 55 55 52 56 50 101 52 51 57 52 97 50 49 56 49 53 98 55 48 57 48 98 99 48 49 56 53 98 52]
[102 54 102 55 55 52 56 50 194 173 101 52 51 57 194 173 52 97 50 49 194 173 56 49 53 98 194 173 55 48 57 48 98 99 48 49 56 53 98 52]

Которые, очевидно, представляют собой два разных байтовых массива для одной и той же строки.

https://play.golang.org/p/_zd7tjqCZl

4b9b3361

Ответ 1

Второй имеет несколько символов "мягкого дефиса" (U + 00AD) между видимыми символами, первый из которых отображается между "482" и "e4". Мягкий дефис - это символ, который невидим, если он не находится в месте разрыва строки, затем он отображается как дефис. Вы скопировали код из текстового процессора или какой-либо другой программы, которая могла бы применить к нему специальное форматирование текста?

Ответ 2

Проблема заключается в том, что у второго есть 4 Unicode Soft Hyphens 0+00ad, которые нельзя распечатать на игровой площадке.

То, что вы на самом деле делаете, в основном похоже на...

fmt.Println([]byte("f6f77482e4394a21815b7090bc0185b4"))
fmt.Println([]byte("f6f77482­-e439­-4a21-­815b­-7090bc0185b4"))

Это похоже на вставку в vim

Это скриншот в vim