Une brève analyse des tableaux dans Golang
Cet article vous apprendra Golang et parlera des tableaux dans les bases du langage Go. J'espère qu'il vous sera utile.
【Recommandation du tutoriel de programmation : Enseignement de la programmation】
1. Définition d'un tableau :
Un tableau est une collection d'éléments du même type de données. Dans le langage Go, le tableau est déterminé à partir du moment de la déclaration et les membres du tableau peuvent être modifiés lors de l'utilisation, mais la taille du tableau ne peut pas être modifiée. Syntaxe de base :
// 定义一个长度为3元素类型为int的数组a var a [3]int
La longueur du groupe doit être constante et la longueur fait partie du type tableau. Une fois définie, la longueur ne peut plus être modifiée.
var a [3]int var b [4]int a = b //不可以这样做,因为此时a和b是不同的类型
Le tableau est accessible via les indices. Les indices commencent à partir de 0
. L'indice du dernier élément est : len-1
. est légal hors de portée), un accès hors limites se déclenche et la panique va se produire. 0
开始,最后一个元素下标是:len-1
,访问越界(下标在合法范围之外),则触发访问越界,会panic。
2.数组的初始化
①初始化数组时可以使用初始化列表来设置数组元素的值。
func main() { var testArray [3]int //数组会初始化为int类型的零值 var numArray = [3]int{1, 2} //使用指定的初始值完成初始化 var cityArray = [3]string{"北京", "上海", "深圳"} //使用指定的初始值完成初始化 fmt.Println(testArray) //[0 0 0] fmt.Println(numArray) //[1 2 0] fmt.Println(cityArray) //[北京 上海 深圳] }
②按照上面的方法每次都要确保提供的初始值和数组长度一致,一般情况下我们可以让编译器根据初始值的个数自行推断数组的长度。
func main() { var testArray [3]int var numArray = [...]int{1, 2} var cityArray = [...]string{"北京", "上海", "深圳"} fmt.Println(testArray) //[0 0 0] fmt.Println(numArray) //[1 2] fmt.Printf("type of numArray:%T\n", numArray) //type of numArray:[2]int fmt.Println(cityArray) //[北京 上海 深圳] fmt.Printf("type of cityArray:%T\n", cityArray) //type of cityArray:[3]string }
我们还可以使用指定索引值的方式来初始化数组
func main() { a := [...]int{1: 1, 3: 5} fmt.Println(a) // [0 1 0 5] fmt.Printf("type of a:%T\n", a) //type of a:[4]int }
3.数组的遍历
遍历数组a有以下两种方法:
func main() { var a = [...]string{"北京", "上海", "深圳"} // 方法1:for循环遍历 for i := 0; i < len(a); i++ { fmt.Println(a[i]) } // 方法2:for range遍历 for index, value := range a { fmt.Println(index, value) } }
4.多维数组
Go语言是支持多维数组的,我们这里以二维数组为例(数组中又嵌套数组)。
二维数组的定义
func main() { a := [3][2]string{ {"北京", "上海"}, {"广州", "深圳"}, {"成都", "重庆"}, } fmt.Println(a) //[[北京 上海] [广州 深圳] [成都 重庆]] fmt.Println(a[2][1]) //支持索引取值:重庆 }
二维数组的遍历
func main() { a := [3][2]string{ {"北京", "上海"}, {"广州", "深圳"}, {"成都", "重庆"}, } for _, v1 := range a { for _, v2 := range v1 { fmt.Printf("%s\t", v2) } fmt.Println() } } 输出: 北京 上海 广州 深圳 成都 重庆
注意: 多维数组只有第一层可以使用...
来让编译器推导数组长度
//支持的写法 a := [...][2]string{ {"北京", "上海"}, {"广州", "深圳"}, {"成都", "重庆"}, } //不支持多维数组的内层使用... b := [3][...]string{ {"北京", "上海"}, {"广州", "深圳"}, {"成都", "重庆"},
5.数组是值类型
数组是值类型,赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。
func modifyArray(x [3]int) { x[0] = 100 } func modifyArray2(x [3][2]int) { x[2][0] = 100 } func main() { a := [3]int{10, 20, 30} modifyArray(a) //在modify中修改的是a的副本x fmt.Println(a) //[10 20 30] b := [3][2]int{ {1, 1}, {1, 1}, {1, 1}, } modifyArray2(b) //在modify中修改的是b的副本x fmt.Println(b) //[[1 1] [1 1] [1 1]] }
tips:
数组支持 “==“、”!=” 操作符,因为内存总是被初始化过的。
[n]*T
表示指针数组,*[n]T
表示数组指针 。
结束:
再次提醒,需要进技术交流群
的同学,可以加我微信fangdongdong_25
,需要进前端工程师交流群的备注“前端”
,需要进go后端交流群的备注“go后端”
2. Initialisation des tableaux
① Lors de l'initialisation d'un tableau, vous pouvez utiliser la liste d'initialisation pour définir la valeur des éléments du tableau.
rrreee🎜② Suivez la méthode ci-dessus pour vous assurer que la valeur initiale fournie est cohérente avec la longueur du tableau. Généralement, nous pouvons laisser le compilateur déduire la longueur du tableau en fonction du nombre de valeurs initiales. 🎜rrreee🎜Nous pouvons également initialiser le tableau en spécifiant la valeur d'index🎜rrreee🎜3. Traversée du tableau🎜🎜🎜Il existe deux méthodes pour parcourir le tableau a : 🎜rrreee🎜4. Tableaux multidimensionnels🎜🎜🎜Le langage Go prend en charge les tableaux multidimensionnels comme exemple (les tableaux sont imbriqués dans des tableaux). 🎜🎜Définition d'un tableau bidimensionnel🎜
rrreee🎜Parcours d'un tableau bidimensionnel🎜
rrreee🎜 🎜Remarque : 🎜 Tableaux multidimensionnels🎜Uniquement le premier niveau🎜Vous pouvez utiliser ...
pour laisser le compilateur déduire la longueur du tableau🎜rrreee🎜5. Le tableau est de type valeur🎜🎜🎜Les tableaux sont des types de valeur, et l'affectation et la transmission de paramètres copieront l'intégralité du tableau. Par conséquent, modifier la valeur de la copie ne modifiera pas sa valeur elle-même. 🎜rrreee🎜astuces : 🎜
- 🎜Array prend en charge les opérateurs "==", "!=", car la mémoire est toujours initialisée. 🎜
- 🎜
[n]*T
représente un tableau de pointeurs, et *[n]T
représente un pointeur de tableau. 🎜
🎜Fin :🎜🎜🎜Rappelez-moi encore, les étudiants qui doivent rejoindre le Groupe d'échange technique
peuvent m'ajouter sur WeChatfangdongdong_25, si vous devez rejoindre le groupe d'échange d'ingénieurs front-end, remarquez "front-end"
, si vous devez rejoindre le groupe d'échange go back-end , remarque "passer en back-end"
🎜🎜 [Recommandations associées : 🎜Tutoriel vidéo Go🎜]🎜
- 🎜Array prend en charge les opérateurs "==", "!=", car la mémoire est toujours initialisée. 🎜
- 🎜
[n]*T
représente un tableau de pointeurs, et*[n]T
représente un pointeur de tableau. 🎜
🎜Fin :🎜🎜🎜Rappelez-moi encore, les étudiants qui doivent rejoindre le Groupe d'échange technique
peuvent m'ajouter sur WeChatfangdongdong_25, si vous devez rejoindre le groupe d'échange d'ingénieurs front-end, remarquez "front-end"
, si vous devez rejoindre le groupe d'échange go back-end , remarque "passer en back-end"
🎜🎜 [Recommandations associées : 🎜Tutoriel vidéo Go🎜]🎜
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Lire et écrire des fichiers en toute sécurité dans Go est crucial. Les directives incluent : Vérification des autorisations de fichiers Fermeture de fichiers à l'aide de reports Validation des chemins de fichiers Utilisation de délais d'attente contextuels Le respect de ces directives garantit la sécurité de vos données et la robustesse de vos applications.

Comment configurer le pool de connexions pour les connexions à la base de données Go ? Utilisez le type DB dans le package base de données/sql pour créer une connexion à la base de données ; définissez MaxOpenConns pour contrôler le nombre maximum de connexions simultanées ; définissez MaxIdleConns pour définir le nombre maximum de connexions inactives ; définissez ConnMaxLifetime pour contrôler le cycle de vie maximum de la connexion ;

Comment utiliser Gomega pour les assertions dans les tests unitaires Golang Dans les tests unitaires Golang, Gomega est une bibliothèque d'assertions populaire et puissante qui fournit des méthodes d'assertion riches afin que les développeurs puissent facilement vérifier les résultats des tests. Installez Gomegagoget-ugithub.com/onsi/gomega Utilisation de Gomega pour les assertions Voici quelques exemples courants d'utilisation de Gomega pour les assertions : 1. Importation d'assertion d'égalité "github.com/onsi/gomega" funcTest_MyFunction(t*testing.T){

La différence entre le framework GoLang et le framework Go se reflète dans l'architecture interne et les fonctionnalités externes. Le framework GoLang est basé sur la bibliothèque standard Go et étend ses fonctionnalités, tandis que le framework Go se compose de bibliothèques indépendantes pour atteindre des objectifs spécifiques. Le framework GoLang est plus flexible et le framework Go est plus facile à utiliser. Le framework GoLang présente un léger avantage en termes de performances et le framework Go est plus évolutif. Cas : gin-gonic (framework Go) est utilisé pour créer l'API REST, tandis qu'Echo (framework GoLang) est utilisé pour créer des applications Web.

Meilleures pratiques : créer des erreurs personnalisées à l'aide de types d'erreurs bien définis (package d'erreurs) fournir plus de détails consigner les erreurs de manière appropriée propager correctement les erreurs et éviter de masquer ou de supprimer les erreurs Wrap si nécessaire pour ajouter du contexte

Les données JSON peuvent être enregistrées dans une base de données MySQL à l'aide de la bibliothèque gjson ou de la fonction json.Unmarshal. La bibliothèque gjson fournit des méthodes pratiques pour analyser les champs JSON, et la fonction json.Unmarshal nécessite un pointeur de type cible pour désorganiser les données JSON. Les deux méthodes nécessitent la préparation d'instructions SQL et l'exécution d'opérations d'insertion pour conserver les données dans la base de données.

Comment résoudre les problèmes de sécurité courants dans le framework Go Avec l'adoption généralisée du framework Go dans le développement Web, il est crucial d'assurer sa sécurité. Ce qui suit est un guide pratique pour résoudre les problèmes de sécurité courants, avec un exemple de code : 1. Injection SQL Utilisez des instructions préparées ou des requêtes paramétrées pour empêcher les attaques par injection SQL. Par exemple : constquery="SELECT*FROMusersWHEREusername=?"stmt,err:=db.Prepare(query)iferr!=nil{//Handleerror}err=stmt.QueryR

La fonction FindStringSubmatch recherche la première sous-chaîne correspondant à une expression régulière : la fonction renvoie une tranche contenant la sous-chaîne correspondante, le premier élément étant la chaîne entière correspondante et les éléments suivants étant des sous-chaînes individuelles. Exemple de code : regexp.FindStringSubmatch(text,pattern) renvoie une tranche de sous-chaînes correspondantes. Cas pratique : Il peut être utilisé pour faire correspondre le nom de domaine dans l'adresse email, par exemple : email:="user@example.com", pattern:=@([^\s]+)$ pour obtenir la correspondance du nom de domaine [1].
