go基础学习

用变量,之前需,先定义,该变量
一个go语言接口的模型:https://gitee.com/goku_black/go-gin-struct-test/blob/master/main.go

1、a++和++a区别?
a++是先进行取值,后进行自增。++a是先进行自增,后进行取值

2、声明变量(三种方式)/常量
1、//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3
var vname1, vname2, vname3 = v1, v2, v3 // 和 python 很像,不需要显示声明类型,自动推断
vname1, vname2, vname3 := v1, v2, v3 // 出现在 := 左侧的变量不应该是已经被声明过的,否则会导致编译错误
2、常量命名方法:const LENGTH int = 10
只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
iota,特殊常量,可以认为是一个可以被编译器修改的常量

3、函数返回值/运算符
函数返回多值用(空白符""可以不用使用返回值)
eg:
,a,b = main() 只需用a,b两个值
1、逻辑运算符
&&:(A && B) 为 False;逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。
||:(A || B) 为 True;逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。
!:!(A && B) 为 True;逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。

右移运算符 ,const b=16; a = b >> 3 即 a = 16>>3 即 a = 16/(2的3次方) 即a = 16/8 即 a=2
<< 左移运算符 ,将除法变成乘法即可
2、位运算符
https://www.runoob.com/go/go-operators.html

4、switch/select/break/contiune/goto
1、如果想要执行多个 case,需要使用 fallthrough 关键字,也可用 break 终止。
switch{
case 1:

if(…){
break
}
fallthrough // 此时switch(1)会执行case1和case2,但是如果满足if条件,则只执行case1
case 2:

case 3:
}
2、select 语句类似于 switch 语句,但是select会随机执行一个可运行的case。如果没有case可运行,它将阻塞,直到有case可运行。
3、break/contiune,和python一样的作用
4、goto 语句可以无条件地转移到过程中指定的行。

5、引用传递/指针传递变量的存储地址
引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
/* 定义交换值函数*/
func swap(x *int, y *int) {
var temp int
temp = x / 保持 x 地址上的值 */
*x = y / 将 y 值赋给 x */
y = temp / 将 temp 值赋给 y */
}

2、
var i int = 20
var c *int
需要用&来接,即c = &i
fmt.Printf(*c) 打印出来为结果20
fmt.Printf© 打印出来为地址20818a220

6、函数做为另一个函数的参数/闭包/函数方法
package main
import (
“fmt”
)
/* 定义结构体 */
type Circle struct {
radius float64
}
func main() {
var c1 Circle
c1.radius = 10.00
fmt.Println("圆的面积 = ", c1.getArea())
}
//该 method 属于 Circle 类型对象中的方法
func (c Circle) getArea() float64 {
//c.radius 即为 Circle 类型对象中的属性
return 3.14 * c.radius * c.radius
}

7、指针
1、Printf和Println
Printf是需要添加输出值的类型,Println不需要,直接就可以输出
2、指针为空判断
if(ptr == nil)
3、还有二级指针: **pptr
4、go向函数传递指针参数,通过引用或地址传参,在函数调用时可以改变其值

8、切片/删除/添加
长度:len(),cap():可以测量切片最长可以达到多少
append():aList = append(aList, 90) 集合的添加是:aTestMap[“like”] = “sajiao”
delete() :delete(aTestMap, “hobby”)

9、接口
写接口函数的时候,接口函数是没有函数名的
fmt.Sprintf为一个拼接语句
number1 := 1
strFormat := number1:%d
fmt.Sprintf(strFormat, number1)

10、并发go/通道channel
go 函数名( 参数列表 )
x := <- y
通道缓冲:
ch := make(chan string, 2)
ch <- “aaaaaaa”
fmt.Println(<-ch)
fmt.Println(ch) //仅获取物理地址

11、下载无效时:go get
1、首先根据提示建好环境变量后再建项目
在这里插入图片描述

2、只需要在命令行中执行,解决:failed to receive handshake, SSL/TLS connection failed
git config --global --unset http.proxy
git config --global --unset https.proxy

3、windows
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
macOS 或 Linux
$ export GO111MODULE=on
$ export GOPROXY=https://goproxy.cn

12、安装gin
cd到对应的文件夹下面,再克隆;如果没有文件夹就自行创建一个
git clone https://github.com/go-playground/locales.git
git clone https://github.com/mattn/go-isatty.git
git clone https://github.com/ugorji/go.git
git clone https://github.com/go-playground/validator
git clone https://github.com/gin-contrib/sse
git clone https://github.com/mattn/go-isatty
cd到该(golang.org)文件夹下
git clone https://github.com/golang/sync.git
git clone https://github.com/golang/crypto.git
git clone https://github.com/golang/sys.git
git clone https://github.com/golang/net.git
git clone https://github.com/golang/text.git
google.golang.org文件夹下的
git clone https://github.com/protocolbuffers/protobuf-go

13、两种环境配置方式对比:
go mod init xxx.py
go mod verify
在这里插入图片描述
在这里插入图片描述

14、package 报错
package awesomeProject is not in GOROOT (/usr/local/go/src/awesomeProject)
出现类似的错误,将自己的项目复制到GOROOT后面的文件夹中

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

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

相关文章

引用阿里图标库,不知道对应的图标是什么,可在本地显示图标ui,再也不要担心刚来不知道公司图标对应的是什么了

项目中使用了阿里的图标库&#xff0c;但是无法看到对应显示什么&#xff0c;每次都要去阿里图标库里面找 在下载下来的文件中会发现有两个文件一个是iconfont.css和iconfont.json&#xff0c; 这两个文件的数据可以拿到然后显示在页面上 有两个问题&#xff1a; 1&#xff1a…

Leetcode—230.二叉搜索树中第K小的元素【中等】

2023每日刷题&#xff08;六十&#xff09; Leetcode—230.二叉搜索树中第K小的元素 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nul…

Qt 文字描边(基础篇)

项目中有时需要文字描边的功能 1.基础的绘制文字 使用drawtext处理 void MainWindow::paintEvent(QPaintEvent *event) {QPainter painter(this);painter.setRenderHint(QPainter::Antialiasing, true);painter.setRenderHint(QPainter::SmoothPixmapTransform, true);painte…

机器人制作开源方案 | 智能助老机器人

作者&#xff1a;刘颖、王浩宇、党玉娟 单位&#xff1a;北京科技大学 指导老师&#xff1a;刘新洋、栗琳 1. 项目背景 1.1 行业背景 随着越来越多的服务机器人进入家庭&#xff0c;应用场景呈现多元化和专业化&#xff0c;机器人产业生态体系正在不断完善&#xff0c;服务…

re:Invent 产品体验与感受分享:Amazon ElastiCache Serverless 缓存的即时扩展

授权说明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在亚马逊云科技开发者社区、 知乎、自媒体平台、第三方开发者媒体等亚马逊云科技官方渠道&#xff09;。 文章目录 前言产品介绍产品使用步骤1.创建缓存服务2.安全组开放访问权限…

C/C++ 有效的括号判断

题目&#xff1a; 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;]的字符串s&#xff0c;判断字符串是否有效。 约束&#xff1a; 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。…

正交调制与解调原理

一、正交调制与解调原理 /***************************************正交调制*********************************************/ 图中信道中的信号为&#xff1a;s(t)sR​(t)cos(w0​t)−sI​(t)sin(w0​t)&#xff08;这就是正交调制后的信号&#xff09; 我们可以通过傅里叶变…

UE4 UMG 颜色字体和PS对应关系

与PS中对应的是Hex sRGB色号 但是PS中采用的16进制色号为6位 UE4中的为8位 UMG制作时默认dpi为96像素/英寸&#xff0c;psd默认dpi是72像素/英寸。 在GUI设计时将dpi设为96&#xff0c;或者将72dpi下字体的字号乘以0.75&#xff0c;都能还原效果图中的效果。

CleanMyMac X这一款mac电脑清理垃圾文件软件好用吗?

CleanMyMac X您的 Mac。极速如新。点按一下&#xff0c;即可优化调整整个 Mac畅享智能扫描 — 这款超级简单的工具用于优化您的 Mac。只需点按一下&#xff0c;即可运行所有任务&#xff0c;让您的 Mac 保持干净、快速并得到最佳防护。CleanMyMac 是一款功能强大的 Mac 清理程序…

【数据结构和算法】移动零

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一&#xff1a;双指针 2.2 方法二&#xff1a;两次遍历 2.3 方法三&#xff1a;一次遍历 三、…

三维成像激光雷达标定板可应用于各种领域

激光雷达技术是一种现代光学遥感技术&#xff0c;是传统雷达技术与现代激光技术相结合的产物&#xff0c;是以激光束作为信息载体&#xff0c;可以用振幅、相位、频率和偏振来搭载信息的雷达。 多线激光雷达则是通过多光束形成扫描平面&#xff0c;通过一维旋转机构实现四周的扫…

每日一博 - Cache Miss Attack

文章目录 概述解决思路缓存空值键并设置短期 TTL&#xff08;生存时间&#xff09;使用布隆过滤器 伪代码1. 缓存空值键并设置短期 TTLa. 缓存空值键b. 设置短期 TTL 2. 使用布隆过滤器a. 集成布隆过滤器b. 查询布隆过滤器 进一步优化系统性能的建议 概述 在缓存管理中&#x…

社交网络分析2(上):社交网络情感分析的方法、挑战与前沿技术

社交网络分析2&#xff08;上&#xff09;&#xff1a;社交网络情感分析的方法、挑战与前沿技术 写在最前面1. 情感分析的基本概念社交网络情感分析的挑战与应用 情感分析研究现状2. 根据分析的对象&#xff0c;情感分析可以划分为哪几种类型&#xff0c;简要地进行说明。词汇表…

vue的slot插槽详解

目录 一、基本用法 在上面的例子中&#xff0c;我们在子组件中定义了一个插槽&#xff0c;然后在父组件中使用标签&#xff0c;并在标签内部放置了一个 标签作为插槽的内容。当父组件被渲染时&#xff0c;插槽的内容将被替换为实际传入的内容。 二、具名插槽 在上面的例子…

jmeter,csv文件参数化+断言 实现一个接口的case

1、case 及其 测试数据 注意保存文件的编码格式 id,name,limit,status,address,start_time,assert_status,assert_message 100,小米100,1000,1,某某会展中心101,2023-8-20 14:20,200,add event success ,,,,,,10021,parameter error 100,小米102,1002,1,某某会展中心103,2023-…

react经验8:使用antd的checkbox实现全选与半选控制

预期实现的效果 列表项部分选中时&#xff0c;checkall处于半选状态&#xff0c;点击checkall要么全选&#xff0c;要么全不选。 实现步骤 列表项类型 declare type TableRow {key: Keytitle: stringisSelected?: boolean }示范数据 const [tabledata, setTabledata] u…

透明PP专用UV胶水粘接PP材料高效率的提升生产效率

使用透明PP专用UV胶水粘接PP材料是提高生产效率的方法。以下方法&#xff0c;可以助您在生产中实现高效的PP材料粘接&#xff1a; ​1.选用合适的透明PP专用UV胶水 选择经过专门设计用于透明PP的UV胶水。这种胶水具有透明性&#xff0c;能保证粘接后的清晰度和外观。 2.自动…

Google Gemini Pro:AI模型的新里程碑,开放API访问;Octo: 一个开源通用的机器人策略

&#x1f989; AI新闻 &#x1f680; Google Gemini Pro&#xff1a;AI模型的新里程碑&#xff0c;开放API访问 摘要&#xff1a;Google宣布推出了名为Gemini的AI模型&#xff0c;旨在使AI更加有用。Gemini分为Ultra、Pro和Nano三个版本&#xff0c;并已开始在产品中使用。Ge…

亚马逊云科技 re:Invent 大会 - S3 对象存储华丽升级

亚马逊云科技 re:Invent 大会 - S3 对象存储华丽升级 本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道。 文章目录 亚马逊云科技 re:Inv…

关于“Python”的核心知识点整理大全19

目录 ​编辑 8.6.4 使用 as 给模块指定别名 8.6.5 导入模块中的所有函数 8.7 函数编写指南 8.8 小结 第9章 类 9.1 创建和使用类 9.1.1 创建 Dog 类 dog.py 1. 方法__init__() 2. 在Python 2.7中创建类 9.1.2 根据类创建实例 1. 访问属性 2. 调用方法 3. 创建多…
最新文章