Maison >développement back-end >Golang >Comment concevoir une API de fonction élégante dans Golang ?
Concevoir des API fonctionnelles élégantes dans Go nécessite de suivre les conventions de dénomination, d'optimiser les types de paramètres, de gérer les erreurs et de prendre en compte la testabilité. Utilisez des conventions de dénomination pour distinguer clairement les noms de fonctions et de méthodes et identifier les catégories ou les objectifs de l'API. Optimisez les types de paramètres, utilisez des structures au lieu de pointeurs ou de types de valeurs et définissez des paramètres d'entrée et de sortie clairs. Utilisez un type d'erreur pour représenter la raison pour laquelle un appel d'API a échoué et évitez de renvoyer directement une chaîne ou une valeur d'erreur. Écrivez des fonctions testables unitairement et évitez d'utiliser un état global ou des données mutables partagées.
Concevoir des API fonctionnelles élégantes dans Go
Concevoir des API fonctionnelles à la fois intuitives et faciles à utiliser est crucial pour créer une base de code maintenable et évolutive. Voici comment procéder dans Go :
1. Utilisez les conventions de dénomination
get_
, calculate_
. get_
、calculate_
。// Get the current user. func GetCurrentUser() *User { ... } // Calculate the discount for a given user. func CalculateDiscountForUser(user *User) float64 { ... }
2. 优化参数类型
type User struct { ID int Name string IsPremium bool } func CreateUser(u *User) error { ... }
3. 管理错误
error
接口。errors.Is
和 errors.As
import "errors" var ErrUserNotFound = errors.New("user not found") func GetUserByID(id int) (*User, error) { ... }
2. Optimisez les types de paramètres
import ( "fmt" "io" ) // Logger接口定义了Write方法。 type Logger interface { Write(string) } // FileLogger将日志写入文件。 type FileLogger struct { File *io.File } // Write implements the Logger interface. func (l *FileLogger) Write(msg string) { fmt.Fprintf(l.File, msg) } // NewLogger创建新的日志记录器。 func NewLogger(path string) (Logger, error) { f, err := os.Create(path) if err != nil { return nil, err } return &FileLogger{f}, nil }
3. Gérer les erreurs
Utilisez les types d'erreur pour indiquer clairement pourquoi les appels d'API ont échoué.
Évitez de renvoyer directement des chaînes ou des valeurs d'erreur, utilisez plutôt l'interface standard error
.
Utilisez errors.Is
et errors.As
pour vérifier les types d'erreurs spécifiques.
// Hash计算给定字符串的哈希值。 func Hash(s string) string { ... }🎜🎜4. Pensez à la testabilité🎜🎜🎜🎜Écrivez des fonctions pour les tests unitaires. 🎜🎜Évitez d'utiliser un état global ou des données mutables partagées. 🎜🎜Utilisez des interfaces ou l'injection de dépendances pour simuler des dépendances externes. 🎜🎜
// ComputeHash计算给定字符串的哈希值。 func ComputeHash(s string) []byte { ... } // FormatHash格式化哈希值以进行显示或比较。 func FormatHash(hash []byte) string { ... }🎜🎜Exemple pratique : une API de fonction de hachage simple🎜🎜🎜Considérons une API de fonction qui génère des hachages : 🎜rrreee🎜Nous pouvons le faire en déclarant le type d'entrée sous forme de chaîne et en séparant la fonction de hachage et la fonction de formatage. Améliorer cette API : 🎜rrreee🎜 De cette façon, nous pouvons isoler la fonctionnalité de l'API et faciliter son extension et ses tests. 🎜
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!