recherche
MaisonProblème communLe golang est-il un langage de haut niveau ?
Le golang est-il un langage de haut niveau ?Jul 07, 2023 pm 01:44 PM
golang高级语言

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++.

Le golang est-il un langage de haut niveau ?

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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
go语言有没有缩进go语言有没有缩进Dec 01, 2022 pm 06:54 PM

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

机器语言、汇编语言、高级语言各有什么特点机器语言、汇编语言、高级语言各有什么特点Apr 22, 2021 pm 04:00 PM

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

go语言为什么叫gogo语言为什么叫goNov 28, 2022 pm 06:19 PM

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

聊聊Golang中的几种常用基本数据类型聊聊Golang中的几种常用基本数据类型Jun 30, 2022 am 11:34 AM

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

一文详解Go中的并发【20 张动图演示】一文详解Go中的并发【20 张动图演示】Sep 08, 2022 am 10:48 AM

Go语言中各种并发模式看起来是怎样的?下面本篇文章就通过20 张动图为你演示 Go 并发,希望对大家有所帮助!

tidb是go语言么tidb是go语言么Dec 02, 2022 pm 06:24 PM

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

go语言是否需要编译go语言是否需要编译Dec 01, 2022 pm 07:06 PM

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

能够把高级语言编写的源程序翻译成目标程序的系统软件是什么能够把高级语言编写的源程序翻译成目标程序的系统软件是什么Jan 22, 2021 pm 05:36 PM

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semainesBy尊渡假赌尊渡假赌尊渡假赌

Outils chauds

SublimeText3 version Mac

SublimeText3 version Mac

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

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

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

MinGW - GNU minimaliste pour Windows

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

Dreamweaver CS6

Outils de développement Web visuel

Version Mac de WebStorm

Version Mac de WebStorm

Outils de développement JavaScript utiles