output, err := utils.ExecuteCommandLine(kubectlCommand)
utils.ExecuteCommandLine
함수는 외부 명령을 실행하고 두 가지 정보를 반환한다.output
변수output
변수는 명령 실행 결과가 저장nil
이 저장된다.err
변수output
변수는 비어있고, err
변수에는 발생한 에러 정보가 저장된다.Nil은 Go 언어에서 특별한 값을 나타내는 예약어.
"없음" 또는 "무효"를 나타낸다. 주로 다양한 타입의 변수들이 가질 수 있는 기본 값 중 하나다.
포인터 변수 초기값
var ptr *int
fmt.Println(ptr) // null
포인터 변수를 선언할 때 초기화되지 않을 경우, 자동으로 nil
로 초기화된다.
슬라이스, 맵, 채널의 초기값
var slice []int
fmt.Println(slice) // nil
var m map[string]int
fmt.Println(m) // nil
var ch chan int
fmt.Println(ch) // nil
인터페이스 변수 초기화
var myInterface interface{}
fmt.Println(myInterface) // nill
만약, 코드에서 err
변수에 nil
이 할당된다면, 에러가 발생하지 않았음을 의미한다.
bson
은 MongoDB에서 사용되는 데이터 형식 중 하나로, JSON과 비슷하지만, 조금 더 효율적인 바이너리 형식.
BSON과 Go 데이터 타입 간의 변환을 도와주는 패키지다.
예를 들어, Go언어의 구조체를 BSON으로 변환하거나, 반대로 BSON 데이터를 Go로 변환하는 작업에 사용한다.
이를 통해 MongoDB와 Go언어 간의 데이터 교환을 쉽게 할 수 있다.
type Person struct {
Name string `bson:"name"`
Age int `bson:"age"`
}
bson:"name"
과 bson:"age"
은 해당 필드가 BSON으로 저장될 때의 이름을 지정하는 것options
패키지는 Go언어에서 MongoDB와 같은 데이터베이스와 상호작용할 때 사용되는 설정을 다루는 도구다.
Find 메서드를 사용하려고할때 사용한 패키지다.
예를 들어 options.Find()
를 호출하면, Find
메서드에 전달할 다양한 설정(옵션)을 만들 수 있다.
opts := options.Find().setSort(bson.D{{"yaml.metadata.creationTime", -1}})
위의 코드의 경우, Find
메서드를 사용할 때, setSort
를 이용해서 정렬 옵션을 사용하고 있다.
이렇게 데이터를 원하는 방식으로 검색하거나 정렬할 수 있도록 다양한 옵션을 줄 수 있는 패키지다.
timestamp
필드가 map[string]string
으로 정의된 것은 여러 가지 시간 정보를 표현할 수 있기 때문.
Map은 여러 key-value로 이루어질 수 있어 다양한 타입의 데이터를 저장할 수 있다.
Timestamp: map[string]string{
"creationTime": "2024-01-18T12:30:30",
"updateTime: "2024-01-18T16:23:30",
}
특정 시간에 접근하거나 특정 시간 정보를 추가/수정/삭제하기 쉽다.
Go에서 Context
는 여러 루틴 간의 데이터를 안전하게 공유하고 통신할 수 있도록 한다.
context
를 사용해서 여러 함수 또는 루틴 간에 값을 전달할 수 있다.
예를 들어, HTTP 요청과 응답 정보를 context
를 통해 전달할 수 있다.
context
는 취소 신호를 보내거나 타임아웃을 설정해서 작업을 중단하거나 제한하는데 사용한다.
예상치 못한 상황이나 장기 실행 작업에 대비할 때 사용한다.
context
작업이 완료되어야하는 기한을 설정할 때 사용한다. 작업이 일정 시간 이내에 완료되지 않으면 취소할 수 있다.
context
는 부모와 자식간의 관계를 형성해서 여러 레벨의 컨텍스트를 생성할 수 있다.
이를 통해 상위 수준의 컨텍스트에서 하위 수준의 값 및 설정을 전파할 수 있다.
(react에서 props같은 개념인듯?)
함수가 종료되기 직전에 특정 문장을 지연 실행하도록 하는 키워드다.
defer 키워드가 포함되어있는 경우, defer가 해당 함수의 맨 첫 부분에 입력되었다고 하더라도
해당 함수의 종료 직전, 즉 가장 마지막에 실행된다.
package main
import "fmt"
func main(){
var nums = []int{1, 2, 3, 4, 5}
for i, value := range nums {
fmt.Println(i, value)
}
}
i는 index, value는 값을 말한다.
여기서 range
가 뭘까?
```
range
Go에서 range는
```
cur
은 MogoDB 데이터를 조회하는 데 사용되는 커서다.