일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- windows
- c++
- API
- json
- File
- 리뷰
- Sync
- FOR
- package
- 책
- http
- tcp
- write
- GO 언어
- window
- Linux
- C
- go
- bitcoin
- JavaScript
- Close
- Callback
- range
- install
- 영화
- Golang
- channel
- Python
- mutex
- go언어
- Today
- Total
목록slice (2)
Code Habit
슬라이스는 레퍼런스 타입이다. 내장된 배열에 대한 포인터이므로 슬라이스끼리 대입하면 값이 복사되지 않고 참조(레퍼런스)만 한다. 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 키워드, 자료형과 [] 생략 슬라이스를 생성하고 공간을..