Telegram Group & Telegram Channel
πŸ‘£ Π—Π°Π΄Π°Ρ‡Π° с ΠΏΠΎΠ΄Π²ΠΎΡ…ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связан с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ повСдСния Ρ†ΠΈΠΊΠ»ΠΎΠ², Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² Go 1.22 (ΠΈ, соотвСтствСнно, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ для Go 1.24).

Π—Π°Π΄Π°Ρ‡Π°: Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ компиляции ΠΈ запускС с использованиСм Go 1.24?


package main

import (
"fmt"
"sync"
"time"
)

func main() {
var wg sync.WaitGroup
count := 3

fmt.Println("Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...")
wg.Add(count)

for i := 0; i < count; i++ {
// ЗапускаСм Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
go func() {
defer wg.Done()
// Π˜ΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ
time.Sleep(time.Duration(10) * time.Millisecond)
// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π° 'i' Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹
fmt.Printf("Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = %d\n", i)
}()
}

fmt.Println("ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...")
wg.Wait()
fmt.Println("ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.")
}



Π Π°Π·Π±ΠΎΡ€:
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (Π΄ΠΎ Go 1.22): Π’ вСрсиях Go Π΄ΠΎ 1.22 сущСствовала извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° Π² замыканиях (функциях, создаваСмых Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊ наша анонимная Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i Π±Ρ‹Π»Π° ΠΎΠ΄Π½Π° Π½Π° вСсь Ρ†ΠΈΠΊΠ».

Когда Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ (послС нСбольшой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ time.Sleep), Ρ†ΠΈΠΊΠ» for, скорСС всСго, ΡƒΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΡΡ. К этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ пСрСмСнная i ΠΈΠΌΠ΅Π»Π° Π±Ρ‹ своС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 3, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° i становится Ρ€Π°Π²Π½Ρ‹ΠΌ count).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² старых вСрсиях Go этот ΠΊΠΎΠ΄, скорСС всСго, Π²Ρ‹Π²Π΅Π» Π±Ρ‹:
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3

ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.

(ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ строк "Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚..." ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это, Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: i := i Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄ запуском Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

НовоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Go 1.22 ΠΈ Π½ΠΎΠ²Π΅Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 1.24): Начиная с Go 1.22, сСмантика ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° for Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° для прСдотвращСния этой распространСнной ошибки. Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° (i Π² нашСм случаС) пСрСсоздаСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ копию i, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ этой ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ (Go 1.24): Благодаря измСнСнию Π² Go 1.22, каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i Ρ‚ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ (порядок строк "Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚..." ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ планирования Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½):
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 0
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 1
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 2
ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.
Use code with caution.
Или, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 2
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 0
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 1
ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.


ΠŸΠΎΠ΄Π²ΠΎΡ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ выглядит ΠΊΠ°ΠΊ классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ошибки Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² языкС начиная с Go 1.22, ΠΎΠ½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ "ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ" Π±Π΅Π· нСобходимости явного копирования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (i := i).
Please open Telegram to view this post
VIEW IN TELEGRAM



tg-me.com/golangtests/764
Create:
Last Update:

πŸ‘£ Π—Π°Π΄Π°Ρ‡Π° с ΠΏΠΎΠ΄Π²ΠΎΡ…ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ связан с ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ повСдСния Ρ†ΠΈΠΊΠ»ΠΎΠ², Π²Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ Π² Go 1.22 (ΠΈ, соотвСтствСнно, Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌ для Go 1.24).

Π—Π°Π΄Π°Ρ‡Π°: Π§Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ компиляции ΠΈ запускС с использованиСм Go 1.24?


package main

import (
"fmt"
"sync"
"time"
)

func main() {
var wg sync.WaitGroup
count := 3

fmt.Println("Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...")
wg.Add(count)

for i := 0; i < count; i++ {
// ЗапускаСм Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ
go func() {
defer wg.Done()
// Π˜ΠΌΠΈΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ
time.Sleep(time.Duration(10) * time.Millisecond)
// Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†ΠΈΠΊΠ»Π° 'i' Π²Π½ΡƒΡ‚Ρ€ΠΈ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹
fmt.Printf("Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = %d\n", i)
}()
}

fmt.Println("ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...")
wg.Wait()
fmt.Println("ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.")
}



Π Π°Π·Π±ΠΎΡ€:
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (Π΄ΠΎ Go 1.22): Π’ вСрсиях Go Π΄ΠΎ 1.22 сущСствовала извСстная ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с Π·Π°Ρ…Π²Π°Ρ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° Π² замыканиях (функциях, создаваСмых Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°, ΠΊΠ°ΠΊ наша анонимная Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°). ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ i Π±Ρ‹Π»Π° ΠΎΠ΄Π½Π° Π½Π° вСсь Ρ†ΠΈΠΊΠ».

Когда Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ (послС нСбольшой Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠΈ time.Sleep), Ρ†ΠΈΠΊΠ» for, скорСС всСго, ΡƒΠΆΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π»ΡΡ. К этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ пСрСмСнная i ΠΈΠΌΠ΅Π»Π° Π±Ρ‹ своС ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 3, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° i становится Ρ€Π°Π²Π½Ρ‹ΠΌ count).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² старых вСрсиях Go этот ΠΊΠΎΠ΄, скорСС всСго, Π²Ρ‹Π²Π΅Π» Π±Ρ‹:
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 3

ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.

(ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ строк "Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚..." ΠΌΠΎΠ³ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹ΠΌ). Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ это, Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: i := i Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π° ΠΏΠ΅Ρ€Π΅Π΄ запуском Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ копию ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

НовоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ (Go 1.22 ΠΈ Π½ΠΎΠ²Π΅Π΅, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ 1.24): Начиная с Go 1.22, сСмантика ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»Π° for Π±Ρ‹Π»Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° для прСдотвращСния этой распространСнной ошибки. Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная Ρ†ΠΈΠΊΠ»Π° (i Π² нашСм случаС) пСрСсоздаСтся для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ свою ΡΠΎΠ±ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ копию i, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ этой ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ (Go 1.24): Благодаря измСнСнию Π² Go 1.22, каТдая Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΈΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i Ρ‚ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½Π° Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ (порядок строк "Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚..." ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ·-Π·Π° Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ планирования Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½):
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 0
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 1
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 2
ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.
Use code with caution.
Или, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:
Запуск Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
ОТиданиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½...
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 2
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 0
Π“ΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° Π²ΠΈΠ΄ΠΈΡ‚ i = 1
ВсС Π³ΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Ρ‹.


ΠŸΠΎΠ΄Π²ΠΎΡ… Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ выглядит ΠΊΠ°ΠΊ классичСский ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ошибки Π·Π°Ρ…Π²Π°Ρ‚Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ†ΠΈΠΊΠ»Π°, Π½ΠΎ ΠΈΠ·-Π·Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² языкС начиная с Go 1.22, ΠΎΠ½ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ "ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ" Π±Π΅Π· нСобходимости явного копирования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (i := i).

BY Go tests


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/golangtests/764

View MORE
Open in Telegram


Go tests Telegram | DID YOU KNOW?

Date: |

What is Telegram Possible Future Strategies?

Cryptoassets enthusiasts use this application for their trade activities, and they may make donations for this cause.If somehow Telegram do run out of money to sustain themselves they will probably introduce some features that will not hinder the rudimentary principle of Telegram but provide users with enhanced and enriched experience. This could be similar to features where characters can be customized in a game which directly do not affect the in-game strategies but add to the experience.

What is Telegram?

Telegram is a cloud-based instant messaging service that has been making rounds as a popular option for those who wish to keep their messages secure. Telegram boasts a collection of different features, but it’s best known for its ability to secure messages and media by encrypting them during transit; this prevents third-parties from snooping on messages easily. Let’s take a look at what Telegram can do and why you might want to use it.

Go tests from us


Telegram Go tests
FROM USA