iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >go是不是高级语言
  • 144
分享到

go是不是高级语言

2023-07-04 18:07:43 144人浏览 薄情痞子
摘要

这篇文章主要介绍“Go是不是高级语言”,在日常操作中,相信很多人在go是不是高级语言问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go是不是高级语言”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!go是高级

这篇文章主要介绍“Go是不是高级语言”,在日常操作中,相信很多人在go是不是高级语言问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go是不是高级语言”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

go是高级语言。Go语言是Google公司在2009年开源的一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能强大;它的主要目标是“兼具 python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。

计算机语言具有高级语言和低级语言之分。而高级语言又主要是相对于汇编语言而言的,它是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。编写的程序称之为源程序。

高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的go语言,java,c,c++C#,pascal,Python,lisp,prolog,FoxPro,易语言,中文版的C语言等等,这些语言的语法、命令格式都不相同。

Go语言是Google公司在2009年开源的一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能强大,被很多Go语言传道者誉为“云计算时代的C语言”。Go语言的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译型语言的性能与安全性”。

Go语言有时候被描述为“C 类似语言”,或者是“21 世纪的C语言”。Go 从C语言继承了相似的表达式语法、控制流结构、基础数据类型、调用参数传值、指针等很多思想,还有C语言一直所看中的编译后机器码的运行效率以及和现有操作系统的无缝适配。

Go的优缺点

程序员的心声:如果现实世界需要我能够在几天内对一个生产系统进行原型设计、测试和部署,而且在每秒能处理比原来多5倍请求,CPU和内存的开销还都很小。我想大概只有Go语言可以胜任了。

Go语言有如下优点:

  • 单独的二进制发布:Go项目编译会生成一个静态的可执行文件。该文件可独立运行而不需要其他依赖。这种方式特别适合于云原生容器环境。

  • 交叉编译:在任何操作系统上都可以编译在其他平台上可运行的二进制文件。比如在Mac系统上可编译出在linuxwindows上可运行的二进制文件。

  • 垃圾回收:Go语言支持垃圾回收。相比较,C++,Rust等需要开发者自己控制。

  • 执行性能:Go非常的快。性能接近于C++。远高于Java,Python、node

  • 开发效率:Go语言同时具备静态语言的运行性能和动态语言的开发效率。

  • 简单,高效:Go语言的设计哲学里就包括了简单和高效。一个典型的反例就是复杂,臃肿的Java语言。

  • 并发性:语言层面支持并发,通过协程和通道简化并发开发,提高并发性能。

  • 丰富的标准库:Go标准库覆盖了文本,io网络,加密,WEB服务,远程rpc,模板引擎等功能。

  • 可以调用C语言:可以调用C语言函数,进一步优化性能,复用C语言庞大的生态系统。

  • 快速编译时间:Go的编译特别快。大家可以参考两款静态博客生成系统,Hexo(Node开发)和Hugo(Go开发)。

  • 工程型:Go语言设计的目的就是成为一门工程语言,解决实际的工程问题。Go语言定义了开发规范,并提供了丰富的工具。使用Go语言可以编写出容易阅读和理解,容易测试、维护和扩展的程序。

Go语言有如下缺点:

  • 缺少重量级框架。如Ruby的Rails,Python的Django,Java的spring

  • 错误处理:没有异常系统。Go官方正在解决该问题。

  • 软件包管理:很长时间以来,Go官方都没有一套软件包管理体制。直到最近,Go的1.13版本正式引入了Go Module作为官方的依赖管理工具。

  • 不是标准的面向对象的编程模型:这个也是Go语言的一个创新。如果你是坚实的OOP的拥护者,可能会有些不适应

golang高级语法

rune

package mainimport "fmt"//rune相当于go的char  使用utf8编码,中文占3个字节,英文一个字节func main() {s:= "ok我爱你"fmt.Println(len(s))    // 11fmt.Println(len([]rune(s)))  // 5fmt.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切片
  • slice的底层是数组

  • slice是对数组的view

  • slice可以向后扩展,不可以向前扩展

  • s[i]不可以超过len(s), 向后扩展不可以超越底层数组cap(s)

  • slice内部维持了3个变量,ptr指针指向slice的第一个元素,len指定了slice的长度,cap指定了slice的容量。

  • slice进行append时,容量不够会进行翻倍。

有如下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)=3slice底层是数组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

  • 添加元素时如果超越cap,系统会重新分配更大的底层数组,原来的数组被拷贝过去,如果原来的数组没人用则会被GC

  • 由于值传递的关系,必须接受append的返回值

map
  • go语言所以类型都有默认值

  • 当map取值的key不存在时,只会返回默认值,不会报错。判断key存不存在用 key, ok := m[“key”]

  • map使用哈希表,作为map的key必须可以比较相等

  • 除了slice,map, function的内建类型都可以作为key

  • struce类型不包含上述字段,也可以作为key

struct
  • 只有使用指针才可以改变结构体内容

  • nil指针也可以调用方法

  • 如何扩充系统类型或者别人的类型:通过结构体继承,通过类型起别名

package main// 如何扩充系统类型或者别人的类型:通过结构体继承,通过类型起别名type queue []intfunc (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() {}

  • 值接受者vs指针接受者,

  • 值接受者是go语言特有

  • 要改变内容必须使用指针接受者,

  • 结构过大也考虑使用指针接受者。

  • 值/指针接受者都可以调用值/指针调用

package mainimport "fmt"type node struct {value intleft, 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 noderoot = 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
  • 多用接口组合

defer
  • panic和return都不影响defer的调用

到此,关于“go是不是高级语言”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: go是不是高级语言

本文链接: https://www.lsjlt.com/news/346730.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • go是不是高级语言
    这篇文章主要介绍“go是不是高级语言”,在日常操作中,相信很多人在go是不是高级语言问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”go是不是高级语言”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!go是高级...
    99+
    2023-07-04
  • go是高级语言吗
    go是高级语言。Go语言是Google公司在2009年开源的一门高级编程语言,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能强大;它的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译...
    99+
    2023-05-14
    Go go语言 Golang
  • node.js是不是高级语言
    本篇内容介绍了“node.js是不是高级语言”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • golang是不是高级语言
    golang是高级语言,是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用更易理解的方式编写程序,它为解决大型系统开发过程中的实际问题而设计,支持并发、规范统一、简单优雅,性能强大,主要目标是兼具Python等动态语言的开发速度...
    99+
    2023-07-10
  • 汇编语言是不是高级语言
    本篇内容介绍了“汇编语言是不是高级语言”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!汇编语言不是高级语言;它和机器语言一样,都属于低级语言。...
    99+
    2023-07-05
  • Go语言的高级程度探究:是还不是?
    标题:Go语言的高级程度探究:是还不是? 近年来,Go语言作为一种新兴的编程语言,备受关注。它以简洁高效的特性,适合并发编程和网络编程,受到众多开发者的青睐。但是,对于其高级程度,人们...
    99+
    2024-04-02
  • Go语言究竟是一种高级语言吗?
    Go语言究竟是一种高级语言吗? Go语言是一种由Google开发的开源编程语言,于2009年首次发布。它被设计为一种支持高效并发编程的编译型语言,具有简洁、直观的语法和强大的标准库,适...
    99+
    2024-04-02
  • go语言是不是易语言
    本篇内容介绍了“go语言是不是易语言”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!go语言不是易语言,两者是不同的编程语言。go语言(又称G...
    99+
    2023-07-04
  • go语言是不是后端语言
    今天小编给大家分享一下go语言是不是后端语言的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。go语言是后端语言。go语言是服务...
    99+
    2023-07-04
  • go语言是不是动态语言
    这篇文章主要介绍了go语言是不是动态语言的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇go语言是不是动态语言文章都会有所收获,下面我们一起来看看吧。go不是动态语言。go语言是Google开发的一种静态强类型、...
    99+
    2023-07-04
  • go语言是不是系统语言
    这篇文章主要讲解了“go语言是不是系统语言”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“go语言是不是系统语言”吧!go语言是系统语言。Go语言是一门系统级语言,它为解决大型系统开发过程中的...
    99+
    2023-07-05
  • go语言是不是编程语言
    本篇内容介绍了“go语言是不是编程语言”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!go语言是编程语言。go语言又称Golang,是Goog...
    99+
    2023-07-04
  • 了解Go语言:它到底算是高级语言吗?
    了解Go语言:它到底算是高级语言吗? Go语言是一种由Google开发的静态类型、编译型、并发型的高级编程语言。自2009年发布以来,Go语言在云计算、大数据、网络编程等领域获得了广泛...
    99+
    2024-04-02
  • go语言是不是机器语言
    这篇“go语言是不是机器语言”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go语言是不是机器语言”文章吧。go语言不是机器语...
    99+
    2023-07-04
  • go语言是不是静态语言
    这篇文章主要介绍“go语言是不是静态语言”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言是不是静态语言”文章能帮助大家解决问题。go语言是静态语言。GO是Google开发的一种静态强类型、编译...
    99+
    2023-07-05
  • tidb是不是go语言
    本篇内容介绍了“tidb是不是go语言”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!是,TiDB采用go语言编写。TiDB是一个分布式New...
    99+
    2023-07-04
  • go是不是一种语言
    这篇“go是不是一种语言”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“go是不是一种语言”文章吧。go是一种语言。Go(又称...
    99+
    2023-07-04
  • Go语言的特性分析:它是否属于高级语言?
    Go语言的特性分析:它是否属于高级语言? Go语言是一种由Google开发的静态强类型编程语言,它设计简洁,易于阅读和编写,同时具备高效的并发特性。那么,根据高级语言的定义,我们来分析...
    99+
    2024-04-02
  • go是不是解释型语言
    这篇文章主要介绍了go是不是解释型语言,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。go是解释型语言。Go(又称Golang)是Google开发的一种静态强类型、编译型、并发...
    99+
    2023-06-14
  • go语言是不是用汉语开发
    今天小编给大家分享一下go语言是不是用汉语开发的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。go语言不是用汉语开发,早期Go...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作