go语言值变量命名规范,定义变量,数据类型,常量,函数基础,函数高级

2023-05-16

这里写目录标题

  • 一.昨日回顾
  • 二.今日内容
    • 1.变量命名规范
    • 2.变量
      • 代码演示
    • 3.类型
      • 代码演示
    • 4.常量
    • 5.函数基础
    • 6.函数高级

一.昨日回顾

1 redis高级:高可用,集群,过期策略,缓存穿透,击穿,雪崩
2 go语言介绍
3 环境搭建:go的sdk(开发工具包,开发阶段用),IDE:集成开发环境(goland,vscode,txt)
4 go命令
	-go build go源码编译成可执行文件(在什么平台就编译成什么平台)
	-go env   go的环境变量
		-GO111MODULE :go 1.11以后,包管理使用go module
		-GOPATH:在不使用go module之前,所有,项目,源代码必须放在该路径下的src下
		-GOROOT: go sdk的安装路径:C:\Program Files\Go
	-go fmt     格式化代码
    -go get     等同于pip3 install 获取第三方模块
    	-go没有一个集中的版本管理仓库(大家约定俗成把它放到github上)
    -go run     编译并执行(开发阶段)
5 go语言交叉编译
6 go hello world
	-一个go项目要运行,必须有个包main包,main包下的main函数,是整个项目的入口
    -导入的包,必须使用,如果不使用,编译不通过
    -func  声明函数 main函数
    -fmt.Println("ssss")   等同于python中的print()内置函数

二.今日内容

1.变量命名规范

1 变量命名,推荐用驼峰  AgeOfXX==  (变量,函数,大写字母开头表示导出,外部包可以使用)
2 go文件命名,推荐用下滑线
3 名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母、数字或下划线
4 不要用关键字和保留关键字作为变量名
5 大写字母和小写字母是不同的:Name和name是两个不同的变量

6 Go语言中关键字有25break      default       func     interface   select
    case       defer         go       map         struct
    chan       else          goto     package     switch
    const      fallthrough   if       range       type
    continue   for           import   return      var

737个保留字,主要对应内建的常量、类型和函数
	内建常量: true false iota nil
	内建类型:  int int8 int16 int32 int64
          	   uint uint8 uint16 uint32 uint64 uintptr
               float32 float64 complex128 complex64
               bool byte rune string error
    内建函数: make len cap new append copy close delete
              complex real imag
              panic recover

2.变量

# 记住三种
	-var a int =10
    -var a =10
    -a:=10
# 掌握定义多个
	-var a,b int=10,11
    -var a,b =10,11
    -a,b:=10,11
# 了解其它方式
    var (
        name="lqz"
        age int
    )
# 注意点:
	1 变量要先定义再使用
	2 完整定义可以先定义再赋初值,后面两种方式,定义阶段必须赋初值
	3 变量的类型一旦确定,后期不能修改(跟py最大的差距)

代码演示

package main

//变量定义

func main() {
	// 第一种定义方式:完整定义
	//var关键字 变量名  变量类型=变量值
	//var a int =10
	//第二种定义方式:类型推导
	//var a =10
	// 第三种:简略声明  :=  是一起的不能隔开
	//a := 10
	//name := "lqz"
	//var name string="lqz"
	//var name ="lqz"

	//其它变形
	//同时定义多个变量
	//定义阶段初始化
	//var name,age string="lqz","18"

	//先定义在初始化
	//var name,age string
	//name="lqz"
	//age="18"

	//类型推导定义多个
	//var name,age ="lqz",18
	//这种方式不能先定义再初始化(变量再定义阶段就需要确定类型)
	//var name,age
	//name="lqz"
	//age=18


	//简略声明
	//name,age:="lqz",18


	//了解
	//var (
	//	name1 = "lqz"
	//	name2 = "egon"
	//	age int
	//)
	//fmt.Println(name1)
	//fmt.Println(name2)
	//fmt.Println(age)    // 0

	/*
	变量定义注意点:
	1 变量要先定义再使用
	2 完整定义可以先定义再赋初值,后面两种方式,定义阶段必须赋初值
	3 变量的类型一旦确定,后期不能修改(跟py最大的差距)

	 */

	//a:=10
	a=10.01
	//a="lqz"
	//fmt.Println(a)



}

3.类型

# 数字类型
1 int类型(长度不一样)
	- int8(正负,27次方-1),int16(正负,215次方-1),int32(正负,231次方-1),int64
    -int:在32位机器上是int32,在64位机器上是int64
2 uint类型(无符号)
	-uint828次方,256),uint16uint32uint64
    -uint:在32位机器上是uint32,在64位机器上是uint64
3 float类型(表示精度不一样)
	-float32float64
    
4 complex 复数类型(不知道):实部和虚部,并返回一个复数类型
	-complex64, complex128
    
5 byte
	-uint8 的别名
6 runego语言中的编码方式使用unicode编码)
	-int32的别名

# 字符串类型
1 string
# 布尔类型
1 bool



# 注意:
强类型语言:不同类型之间不允许直接运算
显示类型转换:手动转换

代码演示

package main

import "fmt"

func main() {
	//var a int8=128  //报错
	//var a int16=128
	//int64
	//var a int = 9223372036854775807
	//var a int64 = 9223372036854775807
	//fmt.Println(a)

	//var a uint8=128
	//fmt.Println(a)

	//var a float32=9.99
	//var a float64=9.999999999

	//c1 := complex(5, 7)
	//c2 := 8 + 27i
	//fmt.Println(c1+c2)
	//fmt.Printf("a的类型是:%T,a的值是%v",c1,c1)

	//打印变量类型
	//fmt.Printf("a的类型是:%T,a的值是%v",a,a)


	//字符串(双引号,和反引号)

	//a:="lqz"
//	a:=`换行
//   换行阿斯顿发射点
//阿斯顿发顺丰`

	//单引号引起来的是一个字符
	//a:='中'  //int32类型
	//a:='中'
	//fmt.Printf("a的类型是:%T,a的值是%v",a,a)
	//
	//var b bool=true
	//fmt.Println(b)
	//b=false
	//fmt.Printf("a的类型是:%T,a的值是%v",b,b)

	var a = 10.01
	var b =10
	//var c int8=9
	//fmt.Println(a+float64(b))
	fmt.Println(int(a)+b)
	//fmt.Println(b+int(c))

}

4.常量

# 恒定不变的量,定义并赋值后,再也不能改了
const name string="lqz"

5.函数基础

package main

//函数
/*
func关键字 函数名(参数1 参数类型,参数2 参数类型)(返回值类型1,返回值类型2){
}
 */


func main(){
	//var a int=add(7,8)
	//a:=add(7,8)

	//有多个返回值,必须用多个值来接收
	//a,b:=add(7,8)
	//有多个返回值,只要第一个
	//a,_:=add(7,8)
	//var a,b=add(7,8)
	//var a int
	//var b string
	//a,b=add(7,8)
	//fmt.Println(a)
	//fmt.Println(b)



}

//1 最简单的函数
//func add(a int,b int)  {
//	fmt.Println(a+b)
//}


//2 有1个返回值
//func add(a int,b int) int {
//func add(a int,b int) (int) {
//	return a+b
//}

//2 有多个返回值
//func add(a int,b int) (int,string) {
//	return a+b,"成功"
//}


//3 多个参数,类型一致,可以省略前面的类型
//func add(a int ,b int){
//func add(a ,b int)int{
func add(a int,b string){
//	return a+b
//}


//4 命名返回值(了解)
//func add(a,b int) (int) {
//	c:=a+b
//	return c
//}

//func add(a,b int) (c int) {
//	//c:=a+b //重复定义
//	c=a+b    //内部不需要定义
//	//return c  //返回的时候,c可以省略
//	return   //返回的时候,c可以省略
//}

//5 空白符  _  忽略掉某个返回值

6.函数高级

package main

import "fmt"

//函数高级(都是按位置传,没有关键字一说)

func main() {
	//test(1,2,5,6,7,8,8)

	//res:=find(10,1,2,43,54,6,7,8,9,10)
	//fmt.Println(res)


	//3 匿名函数 ,定义在函数内部
	//定义一个匿名函数,加括号使用匿名函数
	//func (){
	//	fmt.Println("我是匿名函数")
	//}()
	//把函数赋值给一个变量,并且执行
	//var a func()  //函数类型
	//a = func() {
	//	fmt.Println("aaaaa")
	//}
	//a()
	a是什么类型?定义出a来



	//var a func()=test(10)
	//a()
	//fmt.Println(a)
	var f func(c int)int
	f=test(10,20)
	res:=f(30)
	fmt.Println(res)

}


//1 可变长参数(可以传任意长度的int类型)
//func test(a... int)  {
//	fmt.Println(a)  //切片类型
//	fmt.Println(a[0])
//}

//2 案例:输入一个数字,和一堆数字,判断第一个数字在不在后面一堆中

//func find(a int,b ...int) string {
//	for i:=0;i<len(b);i++ {
//		if a==b[i]{
//			return "在"
//		}
//	}
//	return "不在"
//}


// 3 匿名函数(没有名字的函数)


// 4 闭包函数(定义在函数内部,对外部作用域有引用)
// 函数可以赋值给一个变量:函数是一等公民,头等函数
//func test(c int) func() {
//	a:=func (){
//		fmt.Println(c)
//	}
//	return a
//}


//5 更高级的使用
//func test(a func(func()),b func())(func(a,b int),func())  {
//	return func(a, b int) {
//
//	}, func() {
//
//		}
//}


//函数的参数和返回值都是类型的一部分
//func()
//func(a int)
//func(a int)int
func test(a,b int)func(c int)int{
	f:= func(c int) int{
		return a+b
	}
	return f
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

go语言值变量命名规范,定义变量,数据类型,常量,函数基础,函数高级 的相关文章

  • 【MFC】CListCtrl控件的GetItem用法

    GetItem 方法 说明 检索列表视图项的部分属性或全部属性 BOOL GetItem LVITEM pItem const 参数 pItem 指向 LVITEM 结构的指针 xff0c 该结构接收项的属性 返回值 如果成功 xff0c
  • NVIDIA Jetson Xavier NX部署VINS-fusion-GPU

    NVIDIA Jetson Xavier NX部署VINS fusion GPU 一 环境配置 xff08 Ubuntu 18 04 xff09 1 Cuda 10 2的安装 span class token function sudo s
  • OPi5 香橙派5 安卓12 隐藏大屏模式下任务栏

    记录一下 原版安卓系统在检测到副屏 xff0c 会进入大屏模式 xff0c 屏幕底下有个难看又占地方的任务栏 以下是隐藏的方法 xff0c 在所有界面都会隐藏 xff0c 包括三个虚拟按键 不过 xff0c 用其他APP仍然可以调用包括最近
  • 无人机飞行控制基础

    坐标系统 描述无人机的运动依赖于无人机的位置以及它的方向 常见的主要有两种坐标系统 xff1a 无人机坐标系和大地坐标系 无人机坐标系 无人机坐标系是相对于无人机自身的坐标系统 如下图 坐标原点位于无人机质心 xff0c 三个坐标轴互相垂直
  • socketcan_bridge 包 设置多路CAN口 小记

    参考链接 xff1a socketcan bridge ROS Wiki 基于ROS 43 CANopen的SocketCAN驱动在Ubuntu下的应用说明 SzZhangfq的博客 CSDN博客 ros socketcan socketc
  • 你知道几个中文编程语言,快来瞧瞧这些有趣的中文编程语言。

    提到编程语言 xff0c 我们所了解的也是比较广为人知的一些主流编程语言 xff0c 如Java C C 43 43 Python PHP等 那除了这些编程语言 xff0c 你有了解过中文编程语言吗 xff1f 如果没有 xff0c 那今天
  • Win10连接无线“需要执行操作”或无网络问题的解决方法。

    转载自品略图书馆 http www pinlue com article 2020 03 2800 3510060445349 html 最近这几天有用户反馈Win10系统连接网络出现异常的问题 xff0c 表现为连接到无线网络WIFI之后
  • Excel怎么比较两列文本是否相同?

    转载自品略图书馆 http www pinlue com article 2020 05 2215 1410586873210 html 这个问题很简单 xff0c 属于Excel基础操作技巧 xff0c 我就分享我最喜欢用的三招给你 xf
  • 为什么电脑唯独搜不到自己家wifi?

    转载自品略图书馆 http www pinlue com article 2020 05 2213 2410586244619 html 电脑唯独搜不到自己家wifi xff0c 别人家的都能搜到 xff0c 手机也可以搜到自己家的 xff
  • http://和www.前缀网站有什么具体区别?

    转载自品略图书馆 http www pinlue com article 2019 03 1813 598231572617 html 将http 和www 放一起比较 xff0c 是没有实际意义的 一 http协议二 域名一 http协议
  • 什么是三层交换机、网关、DNS、子网掩码、MAC地址?

    转载自品略图书馆 http www pinlue com article 2020 08 2313 2511146576256 html 一文讲懂什么是三层交换机 网关 DNS 子网掩码 MAC地址 很多朋友多次问到什么是网关 dns 子网
  • C++类对象共享数据的5种实现方法

    转自 xff1a http www pinlue com article 2020 09 2617 0611262487540 html
  • c语言free的用法

    转自 xff1a http www pinlue com article 2020 03 3100 4610073901713 html
  • Spring Boot 修改默认端口号

    修改配置文件 xff0c 加上参数 xff1a server port 61 8014 或者 xff1a server port 8014 启动后可发现tomcat运行在端口8014上了 实现原因可看以下链接 转载 SpringBoot修改
  • php调用类中的方法

    转自 xff1a http www pinlue com article 2020 06 1219 0410725563037 html
  • 人工智能 : 第三篇”脑机接口“

    本文作者Tim Urban xff1a Wait but Why的作者Tim Urban 是埃隆马斯克 xff08 特斯拉 SpaceX创始人 xff09 强烈推荐的科技博主 他写的AI文章是全世界转发量最高的 他的粉丝还包括 xff1a
  • 如何找回一台丢失的Win10电脑?

    今天说说如何找电脑 为什么小微想到了这个问题 还要从一次关于奇葩办公地点的讨论说起 看到大家的回答 xff0c 小微佩服得五体投地 办公经历还可以如此精jing彩xin绝dong伦po 作为结实靠谱的出行伙伴 ThinkPad陪伴大家出现在
  • 不必再狂按空格键了!Word 里文字对齐推荐这4种方法

    我们在用Word写论文 制作简历的时候 xff0c 通常会遇到把word中某些特定文字对齐的情况 那么问题来了 xff0c 你平时都是怎么对齐文字的 xff1f 傻傻的用空格来对齐吗 xff1f 在字符数不等的情况下 xff0c 加空格不仅
  • AMI主板BIOS菜单图文讲解设置!

    电脑硬件 xff0c 包括电脑中所有物理的零件 xff0c 以此来区分它所包括或执行的数据和为硬件提供指令以完成任务的软件 主要包含 机箱 xff0c 主板 xff0c 总线 xff0c 电源 xff0c 硬盘 xff0c 存储控制器 xf
  • luffy-02

    这里写目录标题 一 昨日回顾二 今日内容1 路飞前台配置 1 重构项目目录 2 文件修订 xff1a 目录中非配置文件的多余文件可以移除router的使用 3 前台配置 全局样式 配置文件 axios vue cookies element

随机推荐

  • luffy-03

    这里写目录标题 一 昨日回顾二 今日内容1 跨域问题1 1后端自己处理跨域简单请求非简单请求中间件处理 1 2前端处理跨域App vuevue config js 2 头部组件 尾部组件components Header vuecompon
  • luffy-04

    这里写目录标题 一 昨日回顾二 今日内容1 路飞项目使用xadmin2 首页轮播图接口 轮播图表 视图类 轮播图数量4 通过配置实现 前端对接 后续 接口缓存 3 git的使用3 1git的工作流程 4 git分支git提交代码出现冲突的2
  • luffy-05

    这里写目录标题 一 首页轮播图接口二 今日内容1 过滤文件2 从远端拉项目3 远程仓库3 1链接远程仓库的两种情况 4 冲突出现的原因及解决 一 首页轮播图接口 span class token number 1 span 首页轮播图接口
  • 手把手教你搭建鸿蒙hi3518开发和运行环境

    前言 学习 C 语言 xff0c C 43 43 语言 xff0c 数据结构和算法 xff0c 操作系统 xff0c 网络 xff0c 驱动 xff0c 设计模式等知识 用鸿蒙来强化就太对了 本文教你一步一步搭建鸿蒙的开发和运行环境 xff
  • luffy-06

    这里写目录标题 一 上节回顾二 今日内容1 ssh链接和https链接2 gitlab3 git远程分支合并4 git冲突出现原因及解决5 首页登录注册vue页面Header vueLogin vue 6 登录注册功能接口分析 一 上节回顾
  • luffy-07

    这里写目录标题 一 昨日回顾二 今日内容1 登录注册前端页面1 1Login vue1 2Register vue1 3Header vue 2 多方式登录接口3 手机号是否存在接口3 1路由层user urls py3 2user ser
  • luffy-08

    这里写目录标题 一 集成了腾讯短信 封装 luffyapi lib t sms settings pyluffyapi lib t sms sms py 二 短信验证码接口2 1路由 配置2 2视图 三 短信登录接口3 1视图3 2序列化类
  • luffy-09/redis

    这里写目录标题 一 昨日回顾二 今日内容1 redis介绍2 redis的Windows安装和配置3 普通链接和连接池3 1代码3 2redis pool py 4 redis之string操作5 redis之hash操作 一 昨日回顾 s
  • luffy-10/redis/celery简单介绍

    这里写目录标题 一 昨日回顾二 今日内容2 1redis之列表操作2 2 redis之其他操作2 3 redis之管道2 4 django中使用redis2 4 1通用方案redis pool pyviews py 2 4 2django提
  • luffy-11/celery

    这里写目录标题 一 昨日回顾二 今日内容1 celery基本使用2 celery多任务结构多任务结构小案例 3 高级使用之延时任务4 高级使用之定时任务5 django中使用celery6 首页轮播图定时更新6 1首页轮播图走redis缓存
  • luffy-12/课程页面前端,课程表数据录入,课程表分析,编写

    这里写目录标题 一 昨日回顾二 今日内容2 1课程页面前端2 2课程表分析 编写修改之前的一些数据 2 3课程表数据录入2 4课程分类接口 一 昨日回顾 span class token number 1 span celery span
  • luffy-13/课程接口,课程详情前台

    这里写目录标题 一 课程接口1 1 course serializer py1 2 course models py1 3course pagenation py1 4course SearchByName py1 5course view
  • luffy-14/课程详情,课程章节接口,课程详情前台,七牛云对象存储托管视频

    这里写目录标题 一 课程详情接口 课程章节接口1 1课程详情接口1 2课程章节接口1 3序列化类1 4路由 二 课程详情前台三 七牛云对象存储托管视频四 区间过滤 一 课程详情接口 课程章节接口 span class token numbe
  • luffy-15/区间过滤,搜索功能前端后端,支付宝

    这里写目录标题 一 区间过滤二 搜索功能2 1后端代码2 2前端搜索页面2 2 1views SearchCourse vue2 2 2router index js2 2 3components Header vue 三 支付宝3 0结构
  • QT工程:error: undefined reference to `QSerialPort::QSerialPort(

    问题 xff1a qt中使用QSerialPort时报错 error undefined reference to 96 QSerialPort QSerialPort 解决办法 xff1a 工程文件 pro里增加 xff1a QT 43
  • luffy-16/订单表设计,立即付款接口/前端,支付成功get回调用户展示,支付成功post回调修改订单状态

    这里写目录标题 一 昨日回顾二 今日内容1 订单表设计2 立即付款接口 一堆校验 登录后 2 1视图类2 2序列化类2 3自定义异常类2 4配置文件2 5路由 3 立即付款前端4 支付成功get回调用户展示4 1luffycity src
  • luffy-17/上线

    这里写目录标题 一 上节回顾二 今日内容1 购买阿里云服务器2 服务器配置 软件安装2 1更新系统软件包2 2安装mysql2 3安装redis2 4安装python3 62 5配置pip源 xff1a 阿里云不用配置 xff0c 默认配置
  • bs4遍历文档树,搜素文档树,find_all参数,selenium,模拟登陆百度

    这里写目录标题 一 昨日回顾二 今日内容1 bs4遍历文档树2 bs4的搜索文档树3 find all的其他参数4 css选择器5 selenium的介绍6 selenium的使用7 模拟登陆百度8 selenium的其他使用 一 昨日回顾
  • xpath的使用,selenium爬取京东商品信息,scrapy介绍,安装及使用

    这里写目录标题 一 xpath的使用二 selenium爬取京东商品信息三 scrapy的架构3 1scrapy的架构3 2目录介绍 四 scrapy的简单使用 一 xpath的使用 span class token number 1 sp
  • go语言值变量命名规范,定义变量,数据类型,常量,函数基础,函数高级

    这里写目录标题 一 昨日回顾二 今日内容1 变量命名规范2 变量代码演示 3 类型代码演示 4 常量5 函数基础6 函数高级 一 昨日回顾 span class token number 1 span redis高级 span class