일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- install
- tcp
- write
- FOR
- Linux
- GO 언어
- File
- windows
- Sync
- mutex
- 영화
- c++
- Callback
- JavaScript
- Golang
- json
- window
- http
- API
- channel
- C
- Python
- range
- 리뷰
- Close
- 책
- bitcoin
- go언어
- package
- go
- Today
- Total
목록슬라이스 (3)
Code Habit
for 반복문에서 range 키워드를 이용하여 배열/슬라이스 요소를 순회할 수 있다. func main() { var t []int = [5]int{1, 2, 3, 4, 5} for i, v = range t {// i : index( 0 ~ 4 ), v : value( 1 ~ 5 ) fmt.Println(i, v) } } for range 구문을 사용하여 채널에서 데이터를 계속 기다릴 수 있다. func main() { var wg sync.WaitGroup wg.Add(1) ch := make(chan int) go func() { defer wg.Done() for n := range ch { // ch에 값이 들어올때까지 대기, 채널을 닫으면 (close(ch)) for 구문을 빠져나온다. fmt..
슬라이스는 레퍼런스 타입이다. 내장된 배열에 대한 포인터이므로 슬라이스끼리 대입하면 값이 복사되지 않고 참조(레퍼런스)만 한다. a := []int{1, 2, 3} var b []int// 슬라이스로 선언 b = a// a를 b에 대입해도 요소가 모두 복사되지 않고 참조만 함 b[0] = 9// 슬라이스는 참조이므로 a[0], b[0]의 값이 모두 바뀜 fmt.Println(a) // [9 2 3] fmt.Println(b) // [9 2 3] 마찬가지로 함수의 매개변수에 배열을 넘기면 복사가 되지만 슬라이스를 넘기면 참조만 하게 된다. 따라서 함수 안에서 슬라이스의 요소를 변경하면 함수 바깥에 있는 슬라이스도 값이 바뀐다. 슬라이스의 요소를 모두 복사할 때는 copy 함수를 사용한다. copy(복사될 ..
슬라이스는 배열과 같지만 길이가 고정되어 있지 않고 동적으로 크기가 늘어난다. 또한, 배열과는 달리 레퍼런스 타입이다. var 슬라이스명 []자료형 var a []int // int형 슬라이스 선언 슬라이스는 배열과 달리 [](대괄호) 안에 길이를 지정하지 않는다. 이렇게 생성된 슬라이스의 길이는 0이다. 슬라이스는 make 함수를 사용하여 공간을 할당해야 값을 넣을 수 있다. var a []int = make([]int, 5) // make 함수로 int 형에 길이가 5인 슬라이스에 공간 할당 var b = make([]int, 5) // 슬라이스를 선언할 때 자료형과 [] 생략 c := make([]int, 5) // 슬라이스를 선언할 때 var 키워드, 자료형과 [] 생략 슬라이스를 생성하고 공간을..