«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как я могу различить между по умолчанию и явно установить нулевые значения в структуре Go?

Как я могу различить между по умолчанию и явно установить нулевые значения в структуре Go?

Опубликовано в 2025-03-12
Просматривать:835

How Can I Differentiate Between Default and Explicitly Set Zero Values in Go Structs?

значения по умолчанию и различительные ненициализированные поля в go

в go, примитивные типы имеют значения дефолта. Например, целые числа (int) инициализируются до 0. Однако при работе с структурами различия между значением 0 и ненициализированным полем может быть сложным. Импорт "журнал" Тип теста struct { Testintone Int testinttwo int } func main () { S: = test {testintone: 0} log.println (s) }. Тем не менее, TestIntone был явно установлен на 0, в то время как TestintTwo инициализирован значением по умолчанию. Эта двусмысленность может привести к путанице при определении того, какие поля были явно установлены. Следовательно, невозможно узнать, является ли нулевое значение результатом инициализации или преднамеренного назначения. nil.

type test struct { testintone *int testinttwo *int }
package main

import "log"

type test struct {
    testIntOne int
    testIntTwo int
}

func main() {
    s := test{testIntOne: 0}

    log.Println(s)
}

создать метод сеттера:

] вы можете создать метод для установки значения поля и трека, независимо от того, было ли оно установлено. Testintone Int testinttwo bool // треки, если testinttwo был установлен } func (t *test) setteStintTwo (val int) { t.testinttwo = val t.issettestinttwo = true } func main () { S: = тест {} s.settestinttwo (0) fmt.println (s.issettestinttwo) // Вывод: true } ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3