> For the complete documentation index, see [llms.txt](https://xogk39.gitbook.io/htaeha/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xogk39.gitbook.io/htaeha/go_lang/array-slice.md).

# Useful Methods - Slice

Go lang에서 쓸만한 메소드 정리.

### Slice 내부에 특정 값이 존재하는지 판단하는 메소드

```go
func numberInSlice(a int, list []int) bool {
	for _, b := range list {
		if b == a {
			return true
		}
	}
	return false
}
```

### Slice 내부에 특정 위치의 값을 제거하는 메소드

#### 순서가 상관없을 때

* 제거할 값 자리에 slice의 마지막 값을 대입 후 마지막 값을 제거

```go
// i index의 값을 제거한다. (순서 바)
func remove(s []int, i int) []int {
    s[i] = s[len(s)-1]
    return s[:len(s)-1]
}
```

#### 순서가 유지되어야 할 때

* 값을 제거하고 그 뒤의 모든 값을 shifting한다.

```go
// i index의 값을 제거한다. (순서 유)
func remove(slice []int, s int) []int {
    return append(slice[:s], slice[s+1:]...)
}
```

### Slice 내부에 특정 값을 제거하는 메소드

위의 특정 index의 값을 제거하는 메소드와 연계하여 사용

```go
// s slice에서 가장 먼저 나온 v값을 제거한다. 
func removeVal(s []int, v int) []int {
    for i, val := range s{
        if val == v{
            s = remove(s, i)
            break
        }
    }
    return s
}
```

&#x20;
