Как различить два пользовательских типа структуры в Golang с теми же данными, что и ключи в карте? - PullRequest
0 голосов
/ 22 января 2020
type Student struct {
    id int,
    name string,
}

//If I create two structs, 
s := Student{1, "jack"}
t := Student{1, "jack"}

m := make(map[Student]bool)

m[s] = true
m[t] = true

1) Будет ли это работать? 2) Есть ли что-нибудь похожее на хэш-код Java в Golang?

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Если два значения структуры имеют одинаковые значения элементов, и если все эти элементы сопоставимы, то эти структуры равны. В вашем примере: s==t - это true. Само значение структуры является ключом карты. Таким образом, в вашем примере в конце будет только один элемент на карте.

Подробнее о сопоставимости:

https://golang.org/ref/spec#Comparison_operators

Там не эквивалентен hashCode в Go.

0 голосов
/ 22 января 2020

1) Будет ли это работать?

Да, конечно. Но ваша карта будет содержать только одну запись.

2) Есть ли что-нибудь похожее на хэш-код Java в Go [...]?

Нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...