Können variadische Golang-Parameter in Unit-Tests verwendet werden?
Variadische Parameter in der Go-Sprache ermöglichen es Funktionen, eine variable Anzahl von Parametern unter Verwendung der ...-Syntax zu empfangen. Unit-Tests können variadische Parameter jedoch nicht direkt übergeben. Sie können Reflection verwenden, um eine Testhilfsfunktion zu erstellen und die Funktion dynamisch mithilfe der Methode „reflect.ValueOf(sumNumbers).CallSlice(reflect.ValueOf(tt.args))“ aufzurufen.
Variadische Parameter in der Go-Sprache
Variadische Parameter ermöglichen einer Funktion den Empfang einer variablen Anzahl von Parametern. In Go verwenden variadische Argumente die Syntax ...
. ...
语法。
实战
以下代码演示了可变参数的使用:
func sumNumbers(args ...int) int { sum := 0 for _, v := range args { sum += v } return sum } func main() { // 传递一个参数 result := sumNumbers(10) fmt.Println(result) // 输出:10 // 传递多个参数 result = sumNumbers(10, 20, 30) fmt.Println(result) // 输出:60 }
单元测试中的可变参数
无法直接在单元测试中传递可变参数。这是因为 Go 语言的测试框架不支持它们。
但是,我们可以使用反射来动态地调用具有可变参数的函数。以下代码演示了如何为此创建一个测试助手函数:
func TestSumNumbers(t *testing.T) { tests := []struct { args []int want int }{ {[]int{10}, 10}, {[]int{10, 20}, 30}, } for _, tt := range tests { t.Run(fmt.Sprintf("%v", tt.args), func(t *testing.T) { got := reflect.ValueOf(sumNumbers).CallSlice(reflect.ValueOf(tt.args)) if got.Int() != tt.want { t.Errorf("sumNumbers(%v) = %v, want %v", tt.args, got.Int(), tt.want) } }) } }
这个辅助函数使用 CallSlice
方法动态地调用 sumNumbers
函数,并传递一个 []int
sumNumbers
dynamisch mithilfe der Methode CallSlice
auf und übergibt einen [ ] int
Slice als Argument. 🎜Das obige ist der detaillierte Inhalt vonKönnen variadische Golang-Parameter in Unit-Tests verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen











Das sichere Lesen und Schreiben von Dateien in Go ist von entscheidender Bedeutung. Zu den Richtlinien gehören: Überprüfen von Dateiberechtigungen, Schließen von Dateien mithilfe von Verzögerungen, Validieren von Dateipfaden, Verwenden von Kontext-Timeouts. Das Befolgen dieser Richtlinien gewährleistet die Sicherheit Ihrer Daten und die Robustheit Ihrer Anwendungen.

Wie konfiguriere ich Verbindungspooling für Go-Datenbankverbindungen? Verwenden Sie den DB-Typ im Datenbank-/SQL-Paket, um eine Datenbankverbindung zu erstellen. Legen Sie MaxOpenConns fest, um die maximale Anzahl gleichzeitiger Verbindungen festzulegen. Legen Sie ConnMaxLifetime fest, um den maximalen Lebenszyklus der Verbindung festzulegen.

JSON-Daten können mithilfe der gjson-Bibliothek oder der json.Unmarshal-Funktion in einer MySQL-Datenbank gespeichert werden. Die gjson-Bibliothek bietet praktische Methoden zum Parsen von JSON-Feldern, und die Funktion json.Unmarshal erfordert einen Zieltypzeiger zum Unmarshalieren von JSON-Daten. Bei beiden Methoden müssen SQL-Anweisungen vorbereitet und Einfügevorgänge ausgeführt werden, um die Daten in der Datenbank beizubehalten.

Der Unterschied zwischen dem GoLang-Framework und dem Go-Framework spiegelt sich in der internen Architektur und den externen Funktionen wider. Das GoLang-Framework basiert auf der Go-Standardbibliothek und erweitert deren Funktionalität, während das Go-Framework aus unabhängigen Bibliotheken besteht, um bestimmte Zwecke zu erreichen. Das GoLang-Framework ist flexibler und das Go-Framework ist einfacher zu verwenden. Das GoLang-Framework hat einen leichten Leistungsvorteil und das Go-Framework ist skalierbarer. Fall: Gin-Gonic (Go-Framework) wird zum Erstellen der REST-API verwendet, während Echo (GoLang-Framework) zum Erstellen von Webanwendungen verwendet wird.

Backend Learning Path: Die Erkundungsreise von Front-End zu Back-End als Back-End-Anfänger, der sich von der Front-End-Entwicklung verwandelt, Sie haben bereits die Grundlage von Nodejs, ...

Häufig gestellte Fragen zur Go-Framework-Entwicklung: Framework-Auswahl: Hängt von den Anwendungsanforderungen und Entwicklerpräferenzen ab, z. B. Gin (API), Echo (erweiterbar), Beego (ORM), Iris (Leistung). Installation und Verwendung: Verwenden Sie den Befehl gomod, um das Framework zu installieren, zu importieren und zu verwenden. Datenbankinteraktion: Verwenden Sie ORM-Bibliotheken wie gorm, um Datenbankverbindungen und -operationen herzustellen. Authentifizierung und Autorisierung: Verwenden Sie Sitzungsverwaltungs- und Authentifizierungs-Middleware wie gin-contrib/sessions. Praktischer Fall: Verwenden Sie das Gin-Framework, um eine einfache Blog-API zu erstellen, die POST, GET und andere Funktionen bereitstellt.

Die FindStringSubmatch-Funktion findet die erste Teilzeichenfolge, die mit einem regulären Ausdruck übereinstimmt: Die Funktion gibt ein Segment zurück, das die passende Teilzeichenfolge enthält, wobei das erste Element die gesamte übereinstimmende Zeichenfolge und die nachfolgenden Elemente einzelne Teilzeichenfolgen sind. Codebeispiel: regexp.FindStringSubmatch(text,pattern) gibt einen Ausschnitt übereinstimmender Teilzeichenfolgen zurück. Praktischer Fall: Es kann verwendet werden, um den Domänennamen in der E-Mail-Adresse abzugleichen, zum Beispiel: email:="user@example.com", pattern:=@([^\s]+)$, um die Übereinstimmung des Domänennamens zu erhalten [1].

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...
