[Go] type aliasμ named type
Goμμλ typeμ μ μ΄λ¦μ λΆμ¬νλ κ²μ 2κ°μ§ λ°©λ²μ΄ μ 곡λλ€.
μ΄ 2κ°μ§ μ νμ€λ μΌκ²¬ λΉμ·ν΄λ³΄μ΄μ§λ§, μμ ν λ€λ₯Έ κΈ°λ₯μ΄λ€.
type alias
type aliasλ = μ°μ°μκ° κ°μ΄λ° λ€μ΄κ°λ€.
μ΄κ±°λ μ μ§νκ² μ§μ§ λ³μΉλ§ λ§λλ κ²μ΄κ³ , λ³μΉκ³Ό μλ³Έ νμ
μ μμ ν λμΌν νμ
μ΄λ€.
κ·Έλμ κ·Έλ₯ μ€ν λ§λ§ λ€λ₯΄κ³ μμ ν λμΌνκ² μ¬μ©ν μ μλ€.

package main
import "fmt"
type SomeType struct {
Counter int
}
type A = SomeType // μ΄κ±΄ alias
type B SomeType // μ΄κ±΄ μλ‘μ΄ νμ
func main() {
someValue := SomeType{Counter: 1}
var aValue A = someValue // μμ ν κ°μ νμ
μ΄λ―λ‘ ν λΉ κ°λ₯
fmt.Println(aValue.Counter)
}

named type
=λ₯Ό λΉΌλ©΄ named type μ νμ€κ° λλ€.
μ΄κ±΄ λ¨μν λ³μΉμ λ§λλλ°λ§ κ·ΈμΉλκ² μλλΌ μλ‘μ΄ νμ
μ λ§λ λ€.
μ΄κ² λ¬΄μ¨ μ리λλ©΄

package main
import "fmt"
type SomeType struct {
Counter int
}
type A = SomeType // μ΄κ±΄ alias
type B SomeType // μ΄κ±΄ μλ‘μ΄ νμ
func main() {
someValue := SomeType{Counter: 1}
var bValue B = someValue // λ€λ₯Έ νμ
μ΄λ―λ‘ type check
fmt.Println(bValue.Counter)
}
νμ
μ΄ 1:1λ‘ λ§€μΉλμ§ μλλ€λ κ²μ΄λ€.
μ΄κ±΄ κΈ°μ‘΄ νμ μ μ¬νμ©ν΄μ μ¬μ©ν λ μ μ©νλ€. νμ 체ν¬λ λΉ‘μΈκ² λλ μ¬μ©μ²λ₯Ό μ격νκ² μ ννκΈ°λ μ’λ€.
μνΈκ°μ λ³νμ΄ νμνλ€λ©΄ μλμ κ°μ΄ μΊμ€ν μ νλ©΄ λλ€.

named typeμ κ°μ₯ ν° μ₯μ μ μ¬μ€, μλ‘ μ€λ³΅μ μλ νμ μ λν΄μ λ©μλλ₯Ό μΆκ° μ μν μ μλ€λ κ²μ΄λ€.
μΈλΆ ν¨ν€μ§μ λν΄μλ λ©μλ μΆκ°κ° κ°λ₯ν λΏλλ¬
μλλ λμ§ μλ μ¬λΌμ΄μ€ κ°μ νμ μ λν΄μλ named type μ μκ° λ μνμμλ λ©μλλ₯Ό ꡬνν μ μλ€.

λ΄ κ²½νμ, type alias보λ€λ named typeμ΄ ν¨μ¬ μ ν©ν κ²½μ°κ° λ§μλ€.