Go 语言入门(一)

Go Modules依赖包查找机制
  • 下载的第三方的依赖存储在 $GOPATH/pkg/mod
  • go install 生成的可执行文件存储在 $GOPATH/bin
  • 依赖查找顺序:
    • 工作目录
    • $GOPATH/pkg/mod
    • $GOPATH/src

一、Go语言基础

1.标识符与关键字

1.1 命名方式

​ go变量、常量、自定义类型、包、函数的命名方式必须遵循以下规则:

​ 首字符可以是任意Unicode字符下划线

​ 首字符之外的部分可以是Unicode字符、下划线或数字

​ 名字的长度无限制

理论上名字里可以有汉字,甚至可以全是汉字,但实际中不要这么做

1.2 关键字
breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constifrangetypecontinue
forimportreturnfallthroughvar
1.3 保留字

•常量

true false iota nil

•数据类型

int int8 int16 int32 int64

uint uint8 uint16 uint32 uint64

float32 float64

complex128 complex64

byte rune string

bool error uintptr

•函数

make len cap new append copy

close delete complex real imag panic recover

1.4变量
1.4.1 变量类型
类型Go变量类型fmt输出
整型int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64%d
浮点型float32 float64%f %e %g
复数complex128 complex64%v
布尔型bool%t
指针uintptr%d
引用map slice channel%v
字节byte%d
任意字符rune%d
字符串string%s
错误error%v
1.4.2变量初始化
  • 如果声明后未显式初始化,数值型初始化O,字符串初始化为空字符串,布尔型初始化为false,

    引用类型、函数、指针、接口初始化为nil

    • var a string=“china”
    • var a,b int=3,7
    • var a=“china”,类型推断
    • var a,b=“china”, 7
  • 函数内部的变量(非全局变量)可以通过:=声明并初始化

    • a:=3
  • 下划线表示匿名变量

    • _=2+4
  • 匿名变量不占命名空间,不会分配内存,因此可以重复使用

1.5常量

常量在定义时必须赋值,且程序运行期间其值不能改变

const PI float32=3.14

const(
	PI=3.14
	E=2.71
)

const(
  a=100
  b	//100,跟上一行的值相同
  c	//100,跟上一行的值相同
)

const(
	a = iota	//0
  b					//1
  c					//2
  d					//3
)

const(
	a = iota	//0
  b					//1
  _					//2
  d					//3
)

const(
	a = iota	//0
  b	= 30		//30
  c	= iota	//2
  d					//3
)
1.6 字面量

字面量:没有出现变量名,直接出现了值。基础类型的字面量相当于是常量

不同的数据类型不能比较,但字面量例外

fmt.Printf("9t\n"04 ==4.00//用到了整型字面量和浮点型字面量
fmt.Printf("%v\n".4i//虚数字面量0.4i
fmt.Printf("%t\n", "\u4f17'=='//Unicode和rune字面量
fmt.Printf("Hello\ nWorld\n!\n"//字符串字面量
1.7 变量作用域
全局变量
var (
  A=3	//全局变量,大写字母开头,所有地方都可以访问,跨package访问时需要带上package名称
	b=4	//全局变量,小写字母开头,本package内都可以访问
局部变量
func fool{
	b:=5 //局部变量,仅本函数内可以访问。内部声明的变量可以跟外部声明的变量有冲突,以内部的为准
  
	{
  	b:=6	//仅小圈定的作用域内可以访问,可以跟外部的变量有冲突
	}
1.8 注释 与 godoc
1.8.1 注释的形式
  • 单行注释。以//打头
  • 多行注释。连续多行以//打头,或者在段前使用 /* ,段尾使用 */
  • 多行注释之间不能出现空行
  • NOTE:引人注意,TODO:将来需要优化,Deprecated:变量或函数强烈建议不要再使用
  • 注释行前加缩进即可写go代码
1.8.2 注释的位置
  • 包注释。在package xxx的上方。一个包只需要在一个地方写包注释,通常会专门写一个doc.go,

    里面只有一行packagexxx和关于包的注释

  • 结构体注释。在type xxx struct上方

  • 函数注释。在func xxx()上方

  • 行注释。在行上方或右侧

1.8.3 go doc
  • go doc是go自带的命令
  • go doc entrance class/util
1.8.4 godoc
  • godoc可以为项目代码导出网页版的注释文档
    • 需要先安裝 go get golang.org/x/tools/cmd/godoc
    • 启动http:godoc -http=:6060
    • 用浏览器访问:http://127.0.0.1:6060/pkg/go-course/entrance class

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

html+css+js图片手动轮播

源代码在界面图片后面 轮播演示用的几张图片是Bing上的&#xff0c;直接用的几张图片的URL&#xff0c;谁加载可能需要等一下&#xff0c;现实中替换成自己的图片即可 关注一下点个赞吧&#x1f604; 谢谢大佬 界面图片 源代码 <!DOCTYPE html> <html lang&quo…

C++继承初识

一。继承 1.继承本质是复用相同的代码&#xff08;属性&#xff09; 2.格式&#xff1a;class 类名&#xff1a;继承方式 父类 3.继承方式的规律&#xff1a; 父类的&#xff1a; 对于私有成员&#xff0c;不管哪种继承方式都不可见--->不想被子类继承的成员 对于保护…

代码随想录——划分字母区间(Leetcode763)

题目链接 贪心 class Solution {public List<Integer> partitionLabels(String s) {int[] count new int[27];Arrays.fill(count,0);// 统计元素最后一次出现的位置for(int i 0; i < s.length(); i){count[s.charAt(i) - a] i;}List<Integer> res new Ar…

非对称加密算法原理与应用2——RSA私钥加密文件

作者:私语茶馆 1.相关章节 (1)非对称加密算法原理与应用1——秘钥的生成-CSDN博客 第一章节讲述的是创建秘钥对,并将公钥和私钥导出为文件格式存储。 本章节继续讲如何利用私钥加密内容,包括从密钥库或文件中读取私钥,并用RSA算法加密文件和String。 2.私钥加密的概述…

JDK都出到20多了,你还不会使用JDK8的Stream流写代码吗?

目录 前言 Stream流 是什么&#xff1f; 为什么要用Steam流 常见stream流使用案例 映射 map() & 集合 collect() 单字段映射 多字段映射 映射为其他的对象 映射为 Map 去重 distinct() 过滤 filter() Stream流的其他方法 使用Stream流的弊端 前言 当你某天看…

深度学习模型加密python版本

支持加密的模型: # torch、torch script、onnx、tensorrt 、torch2trt、tensorflow、tensorflow2tensorrt、paddlepaddle、paddle2tensorrt 深度学习推理模型通常以文件的形式进行保存&#xff0c;相应的推理引擎通过读取模型文件并反序列化即可进行推理过程. 这样一来&#…

跨平台Ribbon UI组件QtitanRibbon全新发布v6.7.0——支持Qt 6.6.3

没有Microsoft在其办公解决方案中提供的界面&#xff0c;就无法想象现代应用程序&#xff0c;这个概念称为Ribbon UI&#xff0c;目前它是使应用程序与时俱进的主要属性。QtitanRibbon是一款遵循Microsoft Ribbon UI Paradigm for Qt技术的Ribbon UI组件&#xff0c;QtitanRibb…

vue3【实战】来回拖拽放置图片

效果预览 技术要点 img 标签默认就是可拖拽的&#xff08;a 标签也是&#xff09;事件 e 内的 dataTransfer 对象可用于临时存储事件过程中的数据拖拽事件的默认行为是用浏览器新开页签打开被拖拽对象&#xff0c;所以通常需要禁用默认的浏览器行为被拖拽元素必须设置 id&#…

拉曼光谱入门:2.拉曼光谱发展史、拉曼效应与试样温度的确定方法

1.拉曼光谱技术发展史 这里用简单的箭头与关键字来概括一下拉曼光谱技术的发展史 1928年&#xff1a;拉曼效应的发现 → 拉曼光谱术的初步应用20世纪40年代&#xff1a;红外光谱术的发展 → 拉曼光谱术的限制20世纪60年代&#xff1a;激光作为光源的引入 → 拉曼光谱术的性能提…

阿里云人工智能平台PAI部署开源大模型chatglm3之失败记录

想学习怎么部署大模型&#xff0c;跟着网上的帖子部署了一个星期&#xff0c;然而没有成功。失败的经历也是经历&#xff0c;记在这里。 我一共创建了3个实例来部署chatglm3&#xff0c;每个实例都是基于V100创建的&#xff08;当时没有A10可选了&#xff09;&#xff0c;其显…

数据库缓存管理

1. 简介 缓存管理器是数据库管理系统&#xff08;DBMS&#xff09;中负责管理内存中page并处理文件和索引管理器的page请求的组件。由于内存空间有限&#xff0c;我们不能将所有page存储在缓存池中。因此&#xff0c;缓存管理器需要制定替换策略&#xff0c;当空间填满时选择哪…

rider使用libman

问题 rider没有libman的相关功能&#xff0c;需要使用cli 安装Libman dotnet tool install -g Microsoft.Web.LibraryManager.Cli # 如果存在可以尝试更新 dotnet tool update -g Microsoft.Web.LibraryManager.Cli查看命令 libman --help初始化 cdnjs官网 libman init安…

【十三】图解 Spring 核心数据结构:BeanDefinition 其二

图解 Spring 核心数据结构&#xff1a;BeanDefinition 其二 概述 前面写过一篇相关文章作为开篇介绍了一下BeanDefinition&#xff0c;本篇将深入细节来向读者展示BeanDefinition的设计&#xff0c;让我们一起来揭开日常开发中使用的bean的神秘面纱&#xff0c;深入细节透彻理解…

CTFShow的RE题(三)

数学不及格 strtol 函数 long strtol(char str, char **endptr, int base); 将字符串转换为长整型 就是解这个方程组了 主要就是 v4, v9的关系&#xff0c; 3v9-(v10v11v12)62d10d4673 v4 v12 v11 v10 0x13A31412F8C 得到 3*v9v419D024E75FF(1773860189695) 重点&…

刷代码随想录有感(127):动态规划——判断是否为子序列

题干&#xff1a; 代码&#xff1a; class Solution { public:bool isSubsequence(string s, string t) {vector<vector<int>>dp(s.size() 1, vector<int>(t.size() 1, 0));for(int i 1; i < s.size(); i){for(int j 1; j < t.size(); j){if(s[i …

方法引用详解

什么是方法引用&#xff1f;&#xff1a;针对于函数式接口中的抽象方法 为什么用方法引用&#xff1f;&#xff1a;避免代码的重复&#xff0c;简便书写&#xff0c;提高效率 在使用Lambda表达式的时候&#xff0c;我们实际上传递进去的代码就是一种解决方案&#xff1a;拿参数…

数据结构之“栈”(全方位认识)

&#x1f339;个人主页&#x1f339;&#xff1a;喜欢草莓熊的bear &#x1f339;专栏&#x1f339;&#xff1a;数据结构 前言 栈是一种数据结构&#xff0c;具有" 后进先出 "的特点 或者也可见说是 ” 先进后出 “。大家一起加油吧冲冲冲&#xff01;&#xff01; …

u盘存了东西却显示没有文件怎么办?原因分析与解决方案

在数字化时代&#xff0c;U盘已成为我们日常生活中不可或缺的存储设备。然而&#xff0c;有时我们可能会遇到一种令人困惑的情况&#xff1a;明明在U盘中存储了重要文件&#xff0c;但插上电脑后却显示没有文件。这种突如其来的“消失”不仅让人感到焦虑&#xff0c;更可能对我…

web前端开发——开发环境和基本知识

今天我来针对web前端开发讲解一些开发环境和基本知识 什么是前端 前端通常指的是网站或者Web应用中用户可以直接与之交互的部分&#xff0c;包括网站的结构、设计、内容和功能。它是软件开发中的一个专业术语&#xff0c;特别是指Web开发领域。前端开发涉及的主要技术包括HTML…

Windows ipconfig命令详解,Windows查看IP地址信息

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 ipconfig 1、基…