"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como posso diferenciar o padrão e definir explicitamente os valores zero nas estruturas Go?

Como posso diferenciar o padrão e definir explicitamente os valores zero nas estruturas Go?

Postado em 2025-03-12
Navegar:264

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

valores padrão e distinguindo campos não iniciados em go

em go, tipos primitivos têm valores padrão. Por exemplo, os inteiros (int) são inicializados para 0. No entanto, ao trabalhar com estruturas, distinguir entre um valor 0 e um campo não inicializado pode ser um desafio. importar "log" Tipo de estrutura de teste { testintone int TestIntTwo Int } func main () { s: = teste {testintone: 0} log.println (s) }

Neste código, Testintone e TestInttwo são zero. No entanto, o Testintone foi explicitamente definido como 0, enquanto o TestIntTwo foi inicializado pelo valor padrão. Essa ambiguidade pode levar à confusão ao determinar quais campos foram definidos explicitamente. Portanto, é impossível saber se um valor zero é o resultado da inicialização ou uma atribuição intencional. nil. testintone *int TestIntTwo *int }

package main

import "log"

type test struct {
    testIntOne int
    testIntTwo int
}

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

    log.Println(s)
}

Crie um método setter:

Você pode criar um método para definir o valor de um campo e rastrear se ele foi definido. testintone int testinttwo bool // rastrear se testinttwo foi definido } func (teste t *) SettestintTwo (Val Int) { T.TestintTwo = Val t.issettestintTwo = true } func main () { s: = teste {} S.SetTestintTwo (0) fmt.println (s.issettestinttwo) // saída: true }

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3