[์ถ์ฒ - Nomad Coders]
a์ ๊ฐ์ ๋ฐ๊ฟ๋ b์ ๊ฐ์ ๋ณํ์ง ์๋๋ค!
package main
import "fmt"
func main() {
a := 2
b := a
a = 10
fmt.Println(a, b)
}
package main
import "fmt"
func main() {
a := 2
b := a
a = 10
a = 200202020202020200
fmt.Println(a, b)
}
๋ฌด์์ธ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋ณด๊ณ ์ถ์๋ '&'๋ฅผ ์ฌ์ฉํ๋ค.
& = address
// ๋ฌด์์ธ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ณด๋ ๋ฐฉ๋ฒ
package main
import "fmt"
func main() {
a := 2
b := 5
fmt.Println(&a, &b)
}
์ฃผ์๋ฅผ ์ ์ฅํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฃผ์๋ฅผ ์ ์ฅํ๋ค.
b := &a
package main
import "fmt"
func main() {
a := 2
b := &a
fmt.Println(&a, b)
}
a์ ๊ฐ์ ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ ์๊ณ
b๋ a์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ดํด๋ณด๊ณ ์๋ค.
๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํตํด ๊ฐ์ ์ดํด๋ณด๊ณ ์ถ๋ค๋ฉด '*'๋ฅผ ์ฌ์ฉํ๋ค.
package main
import "fmt"
func main() {
a := 2
b := &a
fmt.Println(*b) // *๋ ์ดํด๋ณด๊ฑฐ๋ ํ์ด๋ณธ๋ค๋ ๋๋์ผ๋ก ์ฌ์ฉ๋๋ค.
}
*๋ฅผ ์ฌ์ฉํ๋ฉด b์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ดํด๋ณผ ์ ์๋ค.
*address = something์ ํ๋ฉด address์ ๋ด๊ธด ๊ฐ์ ๋ณ๊ฒฝํ๋ ๊ฒ์ด๋ค.
์ฝ๋๋ฅผ ๋ณด๋ฉด b์ ๊ฐ์ ๋ณด๊ณ ์๋๋ฐ, b๋ a์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ 2๊ฐ ๋ํ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
๋ฌด๊ฑฐ์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ ๋ ๋งค์ฐ๋งค์ฐ ์ค์ํ ๊ฐ๋ ์ด๋ค!
๊ทธ๋ฆฌ๊ณ ๋ฌด์์ธ๊ฐ์ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์ถ์ผ๋ฉด (๊ทธ๊ฒ์ ์ฃผ์์ ๋ด๊ธด ๊ฐ)
์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ค.
// 1
package main
import "fmt"
func main() {
a := 2
b := &a
a = 5
fmt.Println(*b)
}
// 2
package main
import "fmt"
func main() {
a := 2
b := &a
*b = 5
fmt.Println(a)
}
b์ ๊ฐ๋ ๋ฐ๋ผ์ ๋ณ๊ฒฝ๋๋ค.
package main
import "fmt"
func main() {
a := 2
b := &a
*b = 20
fmt.Println(a)
}
b๋ a๋ฅผ ์ดํด๋ณด๋ ํฌ์ธํฐ๋๊น a์ ๊ฐ์ด ๋ฐ๋๋ค.
'Data Base > Go' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝ๊ณ ๋น ๋ฅธ Go ์์ํ๊ธฐ] #1.10 Maps (0) | 2021.10.29 |
---|---|
[์ฝ๊ณ ๋น ๋ฅธ Go ์์ํ๊ธฐ] #1.9 Arrays and Slice (0) | 2021.10.29 |
[์ฝ๊ณ ๋น ๋ฅธ Go ์์ํ๊ธฐ] #1.7 Switch (0) | 2021.10.29 |
[์ฝ๊ณ ๋น ๋ฅธ Go ์์ํ๊ธฐ] #1.6 If with a Twist (0) | 2021.10.29 |
[์ฝ๊ณ ๋น ๋ฅธ Go ์์ํ๊ธฐ] #1.5 for, range, ...args (0) | 2021.10.26 |
๋๊ธ