Comment définir un seul octet variable en aller lang
Je suis un newbie de golang et que vous voulez trouver un moyen de définir une unique byte
variable.
C'est un programme de démonstration en Efficaces Aller de référence.
package main
import (
"fmt"
)
func unhex(c byte) byte{
switch {
case '0' <= c && c <= '9':
return c - '0'
case 'a' <= c && c <= 'f':
return c - 'a' + 10
case 'A' <= c && c <= 'F':
return c - 'A' + 10
}
return 0
}
func main(){
//It works fine here, as I wrap things with array.
c := []byte{'A'}
fmt.Println(unhex(c[0]))
//c := byte{'A'} **Error** invalid type for composite literal: byte
//fmt.Println(unhex(c))
}
Comme vous le voyez je peux enrouler un octet avec le tableau, les choses se passe bien, mais Comment puis-je définir un seul octet, sans l'aide du tableau? merci.
OriginalL'auteur armnotstrong | 2015-01-05
Vous devez vous connecter pour publier un commentaire.
Dans votre exemple, ce serait le travail, à l'aide de la la conversion de la syntaxe de
T(x)
:Voir cette aire de jeu exemple.
De sortie:
J'ai édité la réponse à expliquer pourquoi cela fonctionne.
C'est comme un cast en C ou java, mais au lieu d'écrire comme
(byte) 'A'
il écrire commebyte('A')
, Suis-je comprendre que le droit?Certaines personnes seront en colère contre vous pour en le comparant à un casting, mais oui, ils sont similaires dans la fonction.
sorte de: la spec ne mentionne jamais "casting", seulement "conversion": voir ce commentaire (stackoverflow.com/questions/25593367/...): "Aller a type de conversions, type d'assertions et interfaces (et type de commutateurs) et c'est tout. Les conversions de Type plus proche de fonte dans, par exemple, C."
OriginalL'auteur VonC
Si vous ne souhaitez pas utiliser le
:=
syntaxe, vous pouvez toujours utiliser unvar
déclaration, qui vous permet de spécifier explicitement le type. e.g:OriginalL'auteur dyoo