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 }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