TGViewer
Channel Public Channel
igoroutine.courses

igoroutine.courses

@igoroutine_courses

igoroutine.courses - The Nature of Programming
Subscribers
239
Photos
17
Videos
0
Links
15

Showing posts older than #18 · Back to latest

Older Posts 11 shown
Post #16 231

Forwarded from Igor Panasyuk | IGORoutine Programming

🙂 Что будет выведено в stdout?
Версия: ARM64 Go compiler 1.24.2


package main

import (
"fmt"
)

type Key struct {
ID int
Callback func()
}

var globalMap = map[any]any{}

func main() {
callback := func() {
fmt.Println("@igoroutine")
}

key1 := Key{
ID: 1,
Callback: callback,
}
key2 := Key{
ID: 1,
Callback: callback,
}

insert[Key](key1)
insert[Key](key2)
fmt.Println(len(globalMap))
}

func insert[T any](key T) {
globalMap[key] = 27
}
  • 🤔 4
  • 🔥 3
  • ❤ 2
Post #15 2.06K
Кстати, курс The Nature Of Concurrency начинается совсем скоро, нас уже более 20 человек! Не упусти свой шанс стать мастером многопоточного программирования!
  • ❤ 7
Post #14 1.94K
Что будет выведено в stdout?

С точки зрения стандарта языка:

Each type argument is substituted for its corresponding type parameter in the generic declaration. This substitution happens across the entire function or type declaration, including the type parameter list itself and any types in that list.

То есть, тип, объявленный внутри generic-функции insert[T], автоматически захватывает любой T, даже, если сам этот тип не использует T явно.

Таким образом, в
m будут ключи Data[string] и Data[int] и len(m) == 2.

https://go.dev/play/p/Nl250o6wX2X

Но всё немного тоньше. Если написать сигнатуру
func insert[T comparable](m map[any]T, a T), то итоговый ответ будет 1, но почему?

https://go.dev/play/p/EkkuBuwtQJ6

Потому что компилятор попытается вывести тип
T и ему подойдёт только any, следовательно, в m будет всегда один ключ Data[any].

Two instantiated types are identical if they are instantiated from the same generic type and with the same full‑form type argument list.

В таких ситуациях нужно внимательно смотреть за выводом типов

🙄🙄 Ещё больше примеров на курсах
  • 🔥 9
Post #13 1.83K
  • 😱 4
Post #12 1.86K
🙂 Что будет выведено в stdout?

Version: Go 1.24.1


package main

func main() {
m := make(map[any]any)
insert(m, "IGOROUTINE COURSES")
insert(m, 1)

println(len(m))

}

func insert[T any](m map[any]any, a T) {
type Data struct{}
d := Data{}

m[d] = a
}


P.S. Подсвечено красным, ибо IDE старое
  • 😱 2
Post #11 319
🙄🙄 В этом канале еженедельно будут выкладываться различные задачи! Пишите в комментариях, на какие темы вам было бы интересно увидеть посты, например, по Go, System Design или ML
  • 🔥 6
Post #9 2.43K
Как создавался курс?

В курс вложен весь мой личный опыт, связанный с многопоточным программированием. Помимо этого, во время создания курса я консультировался с ведущими разработчиками индустрии, например, общался с Романом Елизаровым — Ex Project Lead разработки языка Kotlin, человеком, который разрабатывал те самые корутины, также я учился многопоточному программированию у него в университете.

Подробную информацию о курсе можно посмотреть на сайте
  • ❤ 8
  • 🔥 5
  • 👍 4
  • ⚡ 1
Post #8 2.3K
The Nature of Concurrency — курс, который посвящён многопоточному программированию. В курс вложена не только душа, но и знания, которые можно применить в любом языке, поскольку принципы многопоточного программирования везде одинаковы.

Курс преподаётся на языке Go, подробную информацию о нём можно посмотреть на сайте

▶️ Анонс курса на YouTube
  • 🔥 6
  • ❤ 5
  • 👍 4
  • ⚡ 1
Post #6 501
Всем привет!
Меня зовут Панасюк Игорь, данный канал посвящен моей школе igoroutine.courses. Здесь будут выходить разные анонсы, интересные задачи и новости.

Подробную информацию обо мне вы можете найти на сайте.

igoroutine_courses
The Nature of Programming
  • 🔥 6
  • ❤ 5
  • 👍 4
  • ⚡ 1
Post #1
Channel created
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →