golang est un langage de haut niveau. Il s'agit d'une programmation plus proche du langage naturel et des formules mathématiques. Il est fondamentalement séparé du système matériel de la machine et écrit des programmes de manière plus compréhensible. dans le processus de développement de grands systèmes et prend en charge la concurrence. , des spécifications unifiées, des performances simples et élégantes et puissantes. L'objectif principal est de combiner la vitesse de développement des langages dynamiques tels que Python avec les performances et la sécurité des langages compilés. tels que C/C++.
L'environnement d'exploitation de ce tutoriel : système Windows 10, GO version 1.20, ordinateur Dell G3.
go est un langage de haut niveau. Le langage Go est un langage de programmation open source créé par Google en 2009. Il est conçu pour résoudre des problèmes pratiques dans le processus de développement de systèmes à grande échelle. Il prend en charge la concurrence, les spécifications unifiées, la simplicité et l'élégance, ainsi que ses performances puissantes. L'objectif principal est "d'inclure la vitesse de développement des langages dynamiques tels que Python et les performances et la sécurité des langages compilés tels que C/C++".
Les langages informatiques sont divisés en langages de haut niveau et en langages de bas niveau. Le langage de haut niveau est principalement relatif au langage assembleur. Il s'agit d'une programmation plus proche du langage naturel et des formules mathématiques. Il est fondamentalement séparé du système matériel de la machine et écrit les programmes d'une manière plus facile à comprendre. Le programme écrit est appelé programme source.
Le langage de haut niveau ne fait pas référence à un langage spécifique, mais comprend de nombreux langages de programmation, tels que le langage populaire Go, Java, C, C++, C#, Pascal, Python, Lisp, Prolog, FoxPro, Easy Language, version chinoise. du langage C, etc. La syntaxe et le format de commande de ces langages sont différents.
Le langage Go est un langage de programmation open source de haut niveau créé par Google en 2009. Il est conçu pour résoudre des problèmes pratiques dans le processus de développement de systèmes à grande échelle. Il prend en charge la concurrence, les spécifications unifiées, la simplicité, l'élégance et les performances puissantes. Il est utilisé par de nombreux évangélistes du langage Go. Connu comme « le langage C à l'ère du cloud computing ». L'objectif principal du langage Go est de « combiner la vitesse de développement des langages dynamiques comme Python et les performances et la sécurité des langages compilés comme le C/C++ ».
Le langage Go est parfois décrit comme un « langage de type C », ou « le langage C du 21e siècle ». Go hérite d'une syntaxe d'expression, d'une structure de flux de contrôle, de types de données de base, d'un transfert de valeur de paramètre d'appel, de pointeurs et de nombreuses autres idées similaires du langage C. Il possède également l'efficacité de fonctionnement du code machine compilé que le langage C a toujours apprécié et est cohérent avec Seamless existant. adaptation au système d'exploitation.
Avantages et inconvénients de Go Programmer's Voice : si le monde réel l'exige, je peux prototyper, tester et déployer un système de production en quelques jours, et gérer 5 fois plus de requêtes par seconde, CPU et mémoire. La surcharge est encore très importante. petit. Je pense que seul le langage Go peut le faire.
Le langage Go présente les avantages suivants :
Version binaire séparée : la compilation du projet Go générera un fichier exécutable statique. Ce fichier peut être exécuté sans aucune autre dépendance. Cette approche est particulièrement adaptée aux environnements de conteneurs cloud natifs.
Compilation croisée : compilez des binaires sur n'importe quel système d'exploitation fonctionnant sur d'autres plates-formes. Par exemple, sur un système Mac, des fichiers binaires peuvent être compilés et peuvent fonctionner sous Linux et Windows. Garbage collection : le langage Go prend en charge le garbage collection. En comparaison, C++, Rust, etc. obligent les développeurs à se contrôler. Performance d'exécution : Go est très rapide. Les performances sont proches du C++. Bien supérieur à Java, Python et Node. Efficacité du développement : le langage Go présente à la fois les performances d'exécution des langages statiques et l'efficacité de développement des langages dynamiques.
Simplicité et efficacité : la philosophie de conception du langage Go inclut la simplicité et l'efficacité. Un contre-exemple typique est le langage Java, complexe et volumineux. Concurrence : le niveau de langage prend en charge la concurrence, simplifie le développement simultané via des coroutines et des canaux et améliore les performances de concurrence.
Bibliothèque standard riche : la bibliothèque standard Go couvre le texte, les E/S, le réseau, le cryptage, les services Web, le RPC distant, le moteur de modèles et d'autres fonctions. Le langage C peut être appelé : les fonctions du langage C peuvent être appelées pour optimiser davantage les performances et réutiliser l'immense écosystème du langage C.
Temps de compilation rapide : Go compile extrêmement rapidement. Vous pouvez vous référer à deux systèmes de génération de blogs statiques, Hexo (développement Node) et Hugo (développement Go).
Type d'ingénierie : le but de la conception du langage Go est de devenir un langage d'ingénierie pour résoudre des problèmes d'ingénierie réels. Le langage Go définit les spécifications de développement et fournit une multitude d'outils. En utilisant le langage Go, vous pouvez écrire des programmes faciles à lire et à comprendre, faciles à tester, à maintenir et à développer.
Le langage Go présente les défauts suivants :
Manque de framework lourd. Tels que Ruby's Rails, Python's Django et Java's Spring.
Gestion des erreurs : pas de système d'exception. Les responsables de Go résolvent ce problème.
Gestion des packages logiciels : Depuis longtemps, Go ne dispose pas officiellement de système de gestion des packages. Jusqu'à récemment, la version 1.13 de Go introduisait officiellement Go Module en tant qu'outil officiel de gestion des dépendances.
Il ne s'agit pas d'un modèle de programmation orienté objet standard : c'est aussi une innovation du langage Go. Si vous êtes un fervent adepte de la POO, cela peut être un peu inconfortable.
syntaxe avancée Golang
rune
package main import "fmt" //rune相当于go的char 使用utf8编码,中文占3个字节,英文一个字节 func main() { s:= "ok我爱你" fmt.Println(len(s)) // 11 fmt.Println(len([]rune(s))) // 5 fmt.Println(len([]byte(s))) // 11 // str是int32类型 for i, str := range s { fmt.Printf("%d %c", i, str) fmt.Println() } // str是byte类型 for i, str := range []byte(s) { fmt.Printf("%d %x", i, str) fmt.Println() } // str是rune类型 for i, str := range []rune(s) { fmt.Printf("%d %c", i, str) fmt.Println() } }
slice La couche inférieure de slice est un tableau
slice est une vue du tableau
slice peut être étendue vers l'arrière, mais pas vers l'avant
s[i] ne peut pas dépasser la ou les lentilles, vers Post- l'expansion ne peut pas dépasser le(s) cap(s) du tableau sous-jacent(s)
slice maintient trois variables en interne. Le pointeur ptr pointe vers le premier élément de la tranche, len spécifie la longueur de la tranche et cap spécifie la capacité de la tranche.
Lorsqu'une tranche est ajoutée, si la capacité n'est pas suffisante, elle sera doublée.
有如下 arr := [...]{0, 1, 2, 3, 4, 5, 6, 7} s1 := arr[2:6] s2 := s1[3:5] 则 s1值为[2,3,4,5], len(s1)=4, cap(s1)=6 s2值为[5,6], len(s2)=2, cap(s2)=3 slice底层是数组 slice可以向后扩展,不可以向前扩展 s[i]不可以超过len(s), 向后扩展不可以超越底层数组cap(s)
接着上题 arr := [...]{0, 1, 2, 3, 4, 5, 6, 7} s1 := arr[2:6] s2 := s1[3:5] s3 := append(s2, 10) s4 := append(s3, 11) s5 := append(s4, 12) 则 s1值为[2,3,4,5] s2值为[5,6] s3值为[5,6,10] s4值为[5,6,10,11] s5值为[5,6,10,11,12] arr值为[0, 1, 2, 3, 4, 5, 6, 10] 由于s4和时s5已经超过arr的cap,此时系统会生成一个新的数组,所以s4和s5是对新数组的view,即s4和s5 no longer view arr
Si le plafond est dépassé lors de l'ajout d'éléments, le système réattribuera un tableau sous-jacent plus grand et le tableau d'origine sera copié si personne n'utilise le tableau d'origine, ce sera gc
En raison du transfert de valeur, l'ajout doit être effectué. être accepté Valeur de retour
map
Tous les types en langage Go ont des valeurs par défaut
Lorsque la clé de la valeur de la carte n'existe pas, seule la valeur par défaut sera renvoyée et aucune erreur ne sera signalée. Utilisez key pour déterminer si la clé existe, ok := m["key"]
map utilise une table de hachage, et les clés utilisées comme carte doivent être relativement égales
En plus de la tranche, de la carte et de la fonction intégrée les types peuvent être utilisés comme clés
Le type struce ne contient pas les champs ci-dessus et peut également être utilisé comme clé
struct
Seule l'utilisation de pointeurs peut modifier le contenu de la structure
les pointeurs nuls peuvent également appeler des méthodes
Comment développer types de système ou types d'autres personnes : via l'héritage de structure, Alias par type
package main // 如何扩充系统类型或者别人的类型:通过结构体继承,通过类型起别名 type queue []int func (q *queue) push(v int) { *q = append(*q, v) } func (q *queue) pop() int { head := (*q)[0]*q = (*q)[1:]return head } func (q *queue) isEmpty() bool {return len(*q) == 0 } func main() { }
Récepteur de valeur vs récepteur de pointeur,
Le récepteur de valeur est unique au langage Go
Pour modifier le contenu, vous devez utiliser un récepteur de pointeur,
Considérez utiliser un récepteur pointeur si la structure est trop grande.
Les deux récepteurs de valeur/pointeur peuvent appeler des appels de valeur/pointeur
package main import "fmt" type node struct { value int left, right *node } func newNode(value int) *node{ return &node{ value: value, left: nil, right: nil, } } func (n node) setVal(val int) { n.value = val } func (n *node) setValue(vall int) { n.value = vall } func (n node) print() { fmt.Println(n.value) } func (n *node) travel() { if n == nil { return } fmt.Println(n.value) n.left.travel() n.right.travel() } func main() { var root node root = node{} root.left = &node{value:5} root.right = new(node) root.left.right = &node{4, nil, nil} root.right.left = newNode(7) // 调用指针方法,相当于引用传递,可以改变外部的值 root.left.setValue(100) fmt.Println(root.left.value) // 值传递,调用值方法,方法内部不能改变外部值 root.left.setVal(99) fmt.Println(root.left.value) // 先序遍历 root.travel() }
interface
Combinaison d'interface polyvalente
defer
la panique et le retour n'affectent pas les appels différés
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!

go语言有缩进。在go语言中,缩进直接使用gofmt工具格式化即可(gofmt使用tab进行缩进);gofmt工具会以标准样式的缩进和垂直对齐方式对源代码进行格式化,甚至必要情况下注释也会重新格式化。

机器语言的特点:难学、难懂、难理解;无通用性;需要人为分配内存;运行速度最快。汇编语言的特点:程序的执行效率非常高、占用存储空间小、运行速度快;缺乏通用性,程序不易移植。高级语言的特点:容易、有一定通用性、计算机不能直接识别和执行。

go语言叫go的原因:想表达这门语言的运行速度、开发速度、学习速度(develop)都像gopher一样快。gopher是一种生活在加拿大的小动物,go的吉祥物就是这个小动物,它的中文名叫做囊地鼠,它们最大的特点就是挖洞速度特别快,当然可能不止是挖洞啦。

本篇文章带大家了解一下golang 的几种常用的基本数据类型,如整型,浮点型,字符,字符串,布尔型等,并介绍了一些常用的类型转换操作。

是,TiDB采用go语言编写。TiDB是一个分布式NewSQL数据库;它支持水平弹性扩展、ACID事务、标准SQL、MySQL语法和MySQL协议,具有数据强一致的高可用特性。TiDB架构中的PD储存了集群的元信息,如key在哪个TiKV节点;PD还负责集群的负载均衡以及数据分片等。PD通过内嵌etcd来支持数据分布和容错;PD采用go语言编写。

go语言需要编译。Go语言是编译型的静态语言,是一门需要编译才能运行的编程语言,也就说Go语言程序在运行之前需要通过编译器生成二进制机器码(二进制的可执行文件),随后二进制文件才能在目标机器上运行。

能够把高级语言编写的源程序翻译成目标程序的系统软件是“编译程序”。编译程序属于采用生成性实现途径实现的翻译程序;它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。

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

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

Adaptateur de serveur SAP NetWeaver pour Eclipse
Intégrez Eclipse au serveur d'applications SAP NetWeaver.

MinGW - GNU minimaliste pour Windows
Ce projet est en cours de migration vers osdn.net/projects/mingw, vous pouvez continuer à nous suivre là-bas. MinGW : un port Windows natif de GNU Compiler Collection (GCC), des bibliothèques d'importation et des fichiers d'en-tête librement distribuables pour la création d'applications Windows natives ; inclut des extensions du runtime MSVC pour prendre en charge la fonctionnalité C99. Tous les logiciels MinGW peuvent fonctionner sur les plates-formes Windows 64 bits.

Dreamweaver CS6
Outils de développement Web visuel

Version Mac de WebStorm
Outils de développement JavaScript utiles