수색…


비고

한 가지주의해야 할 점은 string, ints, floats, bool 및 struct와 같이 0이 아닌 값이 아닌 유형은 nil로 설정할 수 없습니다.

기본 0 값

Go의 변수는 시작 값을 제공하는지 여부에 관계없이 항상 초기화됩니다. 사용자 정의 유형을 포함하여 각 유형은 값이 제공되지 않으면 설정되는 0 값을가집니다.

var myString string      // "" - an empty string
var myInt int64          // 0 - applies to all types of int and uint
var myFloat float64      // 0.0 - applies to all types of float and complex
var myBool bool          // false
var myPointer *string    // nil
var myInter interface{}  // nil

이는지도, 조각, 채널 및 함수 유형에도 적용됩니다. 이러한 유형은 nil로 초기화됩니다. 배열에서 각 요소는 해당 유형의 0 값으로 초기화됩니다.

더 복잡한 0 값

조각에서 0 값은 빈 조각입니다.

var myIntSlice []int    // [] - an empty slice

make 를 사용하여 값이 채워진 슬라이스를 만들면 슬라이스에 생성 된 모든 값이 슬라이스 유형의 0 값으로 설정됩니다. 예를 들면 :

myIntSlice := make([]int, 5)    // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println(myIntSlice[3])
// Prints 0

이 예에서, myIntSlice A는 int 그 유형에 대한 제로 값을 모두 0이기 때문이다 5 개 원소가 포함되어 슬라이스 int .

new 슬라이스를 만들 수도 있습니다. 슬라이스에 대한 포인터를 만듭니다.

myIntSlice := new([]int)        // &[] - a pointer to an empty slice
*myIntSlice = make([]int, 5)    // [0, 0, 0, 0, 0] - a slice with 5 zeroes
fmt.Println((*myIntSlice)[3])
// Prints 0

참고 : 슬라이스 포인터는 인덱싱을 지원하지 않으므로 myIntSlice[3] 사용하여 값에 액세스 할 수 없으므로 대신 (*myIntSlice)[3] 와 같이 수행해야합니다.

구조체 0 값

초기화하지 않고 구조체를 만들 때 구조체의 각 필드는 해당 0 값으로 초기화됩니다.

type ZeroStruct struct {
    myString string
    myInt    int64
    myBool   bool
}

func main() {
    var myZero = ZeroStruct{}
    fmt.Printf("Zero values are: %q, %d, %t\n", myZero.myString, myZero.myInt, myZero.myBool)
    // Prints "Zero values are: "", 0, false"
}

배열 제로 값

Go 블로그 당 :

배열은 명시 적으로 초기화 할 필요가 없습니다. 배열의 제로 값은 요소가 그 자체가 제로화 된 바로 사용할 수있는 배열입니다

예를 들어 myIntArray 는 0 인 int 값이 0으로 초기화됩니다.

var myIntArray [5]int     // an array of five 0's: [0, 0, 0, 0, 0]


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow