初识Go语言

news2024/10/7 14:29:49

Go是一种静态强类型、编译型、并发型语言。

一、Go语言的设计思维

尽可能少的方式去处理事情,减少选择的烦恼。

go的特点:

  • 仅有25个关键字,简洁的语法
  • 内置垃圾回收器,大大降低程序员管理内存的负担
  • 去除隐式类型转换、去除指针算法,提高语言健壮性
  • 首字母大小写决定可见性,通过约定而不是声明告诉开发者,提高阅读效率
  • 故意不支持函数默认参数,必须明确每个参数意义,提高设计的清晰度和代码可读性
  • 没有面向对象的类,也没有子类,没有构造函数和析构函数
  • 偏好组合
  • 任何类型都可以拥有方法
  • 接口只是方法的集合,其实现是隐式的(无需implements显示声明)
  • n--、n++都是语句,不是表达式。没有--n、++n
  • 没有三元运算符
  • 内存总是初始化为零值
  • 没有异常
  • 内置字符串、切片、map等类型
  • 内置并发支持,对多核计算机支持友好。goroutine、channel、select就是为并发而生的
  • 官方提供了丰富的工具链,涵盖了编译、编辑、依赖获取、调试、文档、性能分析等诸多方面

二、Vscode开发工具

依赖git:Git官网下载并安装

下载go:The Go Programming Language (google.cn)

vscode:Visual Studio Code - Code Editing. Redefined下载并安装

插件搜索并安装:

 还包括TODO Tree

创建项目并重启vscode

执行项目会提示dlv依赖的安装,install ALL即可(由于是国外的所以需要在系统环境变量中配置GOPROXY,mirrors.aliyun.com找到相关代理地址,后面添加,direct)

不安装dlv,运行go mod init XXXX(随意的项目名称)即会报错(相当于执行F5)go mod管理整个项目

运行项目执行:go run xxx.go

三、语言的发展

1、cpu:控制器、计算器

数据在I里,从I读取到内存以供cpu使用,cup负责从内存加载指令和数据,并把执行结果写入内存,如有必要写到O设备上。

机器语言(二进制)不同设备指令集并不一致->汇编语言(CPU指令集一致:SUB A B)->编译语言(符合ABI规范的二进制文件,os帮加载到内存运行main)

静态语言:运行时结构不可变的语言。

2、高级语言的发展:

  • 非结构化语言

          编号或标签、GOTO,子程序可以有多个入口和出口

          有分支、循环

  • 结构化语言

            任何基本结构只允许是唯一入口和唯一出口

            顺序、分支、循环、废弃GOTO(随意跳转)

  • 面向对象语言

            更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承

             封装、继承、多态

  • 函数式语言

             古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中

             函数是“一等公民”,高阶函数

四、程序(program)

  • 算法+数据结构=程序
  • 数据是一切程序的核心
  • 数据结构是数据在计算机中的类型和组织方式
  • 算法是处理数据的方式,算法有优劣之分

1、命名规范

标识符采用CamelCase驼峰命名法

  • 只在包内可见,采用小驼峰命名
  • 在包外可见,采用大驼峰命名

简单循环变量可以使用i、j、k、v等

条件变量、循环变量可以是单个字母或单个单词,Go倾向于使用单个字母。

常量驼峰命名即可

  • 在其他语言中,常量多使用全大写加下划线的命名方式,Go语言没有这个要求
  • 约定俗成的全大写,例如PI

函数/方法的参数,返回值应是单个单词或单个字母

函数可以是多个单词命名

类型可以是多个单词命名

方法由于调用时会绑定类型,所以可以考虑使用单个单词

包以小写单个单词命名,包名应该和导入路径的最后一段路径保持一致

接口优先采用单个单词命名,一般加er后缀。Go语言推荐尽量定义小接口,接口也可以组合

2、标识符

在编译后看不到,被替换成了内存地址了。

标识符是编程给程序员用的,用来指代内存中的一个值

3、常量

Go语言中,boolean、rune、integer、float、complex、string都是字面常量。其中rune

integer、float、complex常量被称为数值常量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101838.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UNIAPP实战项目笔记56 注册时验证手机号是否存在

UNIAPP实战项目笔记56 注册时验证手机号是否存在 注册时候需要拦截并验证登录 通过验证的直接跳转,未通过验证的提示手机号已存在 实际案例图片 后端接口文件 index.js var express require(express); var router express.Router(); var connection require(../db/sql.js);…

成端/接续功能使用说明

在nVisual系统中,接续/成端功能可以高效、准确、清晰的查看熔纤盒内的光纤连接情况。今天小编来给大家介绍一下成端和接续功能的使用。 一、成端 1. 功能入口 成端功能的入口有两种方式,第一个是鼠标右击选中线缆,出现连线右键菜单&#xf…

互联网新热——元宇宙带来了全新数字应用模式,推动数字经济的发展

大家平时电视上看到的在元宇宙中逛街、购物、社交,娱乐、看直播和表演……这些高度沉浸式地互动体验,都可以在“大唐灵境”实现了! 近日,太一集团与大唐不夜城联手打造的中国首个文旅电商元宇宙“大唐灵境”将正式开放“东市”商…

阿里云轻量级服务器部署了项目外网无法访问

阿里云轻量级服务器部署了项目外网无法访问1、问题描述2、配置安全组权限2.1、阿里云控制台权限配置(热加载,不用重启)2.2、在服务器中查看防火墙中有哪些端口被开放(非热加载,最后一定要手动重新加载)3、如…

MAC Python 虚拟环境配置方法parcharm

MAC Python 虚拟环境配置方法&parcharm一、安装环境包1.找个风水宝地2.安装virtualenv包二、创建虚拟环境1.对比记录2.创建虚拟环境启动虚拟环境1.启动命令2.环境对比三、退出虚拟环境四、pycharm使用虚拟环境1.打开parcharm,新建一个项目,起个名字。…

excel账龄计算:两个经典公式快速制作账龄统计表

财务工作者对于账龄统计表都不陌生,我们之前也分享过很多关于账龄统计表的操作技巧和公式解析,但是今天遇到的这种账龄统计表,还是让财务小姐姐犯了难,到底是个怎样的账龄统计表呢,一起来看看吧: 如图所示&…

【工厂方法模式-3】工厂方法模式的代码实现及使用场景

在前面我们学习了简单工厂模式,简单工厂模式适用于产品对象比较固定的使用场景。简单工厂模式工厂模式存在两个比较大的问题,一个是新产品的加入必须修改工厂类,违反了开闭原则;另一个是所有产品对象都与工厂类耦合,无…

校友录网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字):网站前台: 关于我们、联系我们、资讯信息、用户信息、用户动态、动态评论 管理员功能: 1、管理关…

基于vmdk文件创建虚拟机

基于vmdk文件创建虚拟机 1、准备vmdk文件 下载地址如下: 链接:https://pan.baidu.com/s/1coQuZw8cgg5oU5bSegsS7Q?pwd=5mv0 提取码:5mv0 账号/密码:root/sinzuo 2、创建虚拟机 选择自定义的方式创建虚拟机 硬件兼容性选择17,尽可能的向下兼容。 选择稍后安装操作系…

使用 IQR、Z-score、LOF 和 DBSCAN 进行异常值检测

你在处理异常值吗?哪种方法更适合检测偏斜或正态分布数据的异常值? 无论你是在执行 EDA 之前进行数据清理过程,将数据传递给机器学习模型,还是执行任何统计测试,本文都将帮助你获得许多此类问题的答案以及实际应用。 …

Static、#define、const、mutable、typedef

Static、#define、const、mutable、typedef 代码存储区域:常量区、代码区、静态区(全局区)、堆区、栈区 栈区向下增长,堆区向上增长。栈由系统管理,没有内存碎片,每个元素之间都是连续的,大小…

MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估及论文写作技巧

【查看原文】基于MAXENT模型的生物多样性生境模拟与保护优先区甄选、自然保护区布局优化评估及论文写作技巧 随着生物多样性全球大会的举办,不论是管理机构及科研单位、高校都在积极准备,根据国家林草局最新工作指示,我国将积极整合、优化自…

【Django项目开发】功能菜单模型类设计、视图类设计要点(一)

一、抽象模型类设计 1、抽象模型类设计的作用: 1、定义所有模型类的公共属性,当其他的模型类继承该抽象模型类时,就具备了模型类中的属性了;在项目开发中,减少代码的编写 2、抽象模型类中经常定义的字段包括&#xff…

HFSS使用经验二

目录 一、绘制空气盒 二、Driven Solution Setup 的设置 ​三、如何添加圆场放大图 四、仿真之前的Validate 五、开始仿真 六、仿真过程Solution Data的查看 一、绘制空气盒 选择Padding type为Absolute Offset 设定Boundary为Radiation辐射边界 空气盒比较大&#xff…

数据校验-springboot

前置知识 先了解一下JSR、Hibernate Validator、Spring Validation: JSR(Java Specification Request)规范是Java EE 6中的一项子规范,也叫作Bean Validation。它指定了一整套基于bean的验证API,通过标注给对象属性添…

数据可视化之中国足球队在国际足联及亚洲的历史排名看这儿

最近最热的体育盛事莫过于世界杯了,四年一届的足球盛事,正在卡塔尔激战正酣。这时候可能会有球迷疑问:怎么没看到中国队呢?也有网友调侃说中国队被分到工程队去了。 泱泱大国,难道中国十几亿人口,一个足球队…

【Javassist】快速入门系列02 使用Javassist实现方法执行时间统计

系列文章目录 01 在方法体的开头或结尾插入代码 02 使用Javassist实现方法执行时间统计 前言 上一章我们介绍了使用Javassist实现一个简单的Hello World程序,学会了Javassist创建类和新增方法。本章主要介绍如何使用Javassist实现一个无侵入的方法执行时间统计 …

DCN神州数码——DHCP相关操作指令(超详细)

DHCP服务器配置 service dhcp 启动DHCP 服务器或中继功能 ip dhcp pool pool1 network-address 1.1.1.1 24 default-router dns-server 8.8.8.8 domain-name dcn.com netbios-name-server 2.2.2.2 lease 5 ip dhcp excluded-address 2.2.2.2 创建DHCP地址池pool1配置地…

PHP反序列化详解(一)——反序列化基础

今天继续给大家介绍渗透测试相关知识,本文主要内容是PHP反序列化详解(一)——反序列化基础。 免责声明: 本文所介绍的内容仅做学习交流使用,严禁利用文中技术进行非法行为,否则造成一切严重后果自负&#x…

西藏旅行网站

开发工具(eclipse/idea/vscode等): 数据库(sqlite/mysql/sqlserver等): 功能模块(请用文字描述,至少200字): (1)旅游线路信息发布以及预定功能:顾客可通网站查看相应的旅游线路信息 和预定旅游线路功能,管理…