scala의 underscore(_)의 특징이 go lang에도 있는 것 같다. 나는 스칼라의 underscore를 '거시기'로 생각했다.

http://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala


go에도 비슷한 의미로 사용하려고 한 것 같다.  아직까지는 많이 발견하지 못했지만.. 찾게 되면 계속 작성해야 겠다. 



_(underscore)의 사용이 for에도 적용된다. 


1) key 를 사용하지 않겠다는 의미가 있다.

package main


import "fmt"


func main() {

var m map[string]int 

        m = map[string]int{}

m["a"] = 1

m["b"] = 2

sum := 0

for _, value := range m {

sum += value

}

fmt.Println(sum)

}


출력

3



2) 값을 대입받는 의미로도 쓰인다. 


ackage main


import "fmt"


func main() {

var m map[string]int

m = map[string]int{}

m["a"] = 1

m["b"] = 2


for i, _ := range m {

fmt.Println(i)

}

}



결과

a

b


여기서는 아래의 코드와 동일한 효과가 있다. 


for i := range m {

fmt.Println(i)

}




3) import시 dependency lib는 사용하지 않는 용도로 쓰인다. 


the Go Specification

To import a package solely for its side-effects (initialization), use the blank identifier as explicit package name:

import _ "lib/math"



참고로 underscore는 값의 개념(value)로 쓸 수 없다.

cannot use _ as value


Posted by '김용환'
,