Go学习之旅:包、变量和函数(DAY 1)

news2025/7/20 21:05:11

文章目录

    • 前引
    • 包、变量和函数
      • 1、包的概念和所用
      • 2、导出名或者导出函数
      • 3.1、函数参数声明方式(一)
      • 3.2、函数参数声明方式(二)
      • 4、函数返回值支持多值返回
      • 5、函数命名返回值
      • 6、变量声明
      • 7、变量的基础类型
      • 8、变量的默认值(零值)
      • 9、变量的类型转换
      • 10、变量的定义类型推导 + 常量定义


前引


由于这段时间都一直在找实习 而现在已经快到另外一个阶段了 所以也算是有一点心情继续更新博客了

家中有事本来打算今天离校回成都 但恰巧今天再次封校 无奈把之前买的票给退掉了 只能尽人事 听天意了 继续留校等待出校的时机 希望封控不会持续太久…

这段时间发生了太多太多事情了 后续有比较好的时机会单独分享一下

后续由于某些原因 需要去学习Go语言 在寝室闲着也是闲着 不如自己也就花点时间学一下 后续反正也要学

God Bless!上天保佑


包、变量和函数


1、包的概念和所用


Go语言开始都是以包为单位 有两个关键字 Packet Import 可执行程序必须包含main Packet 就像c语言中的以main函数为入口 import则是引入其他包的路径 例如常用的fmt 就类似于c语言中的头文件引入
注意使用的时候 import是引入包的路径 而在函数中 则是指出包来使用函数

需要理解这个概念 于是自己写了两个文件
在这里插入图片描述


111.go

package main

import (
	"fmt"
	"../test2"
)

func main() {
	fmt.Println("today is 2022/11/26")
	FuckCOVID.Go()
}

222.go

package FuckCOVID

import (
	"fmt"
)

func Go() {
	fmt.Println("Fuck this COVID-19")
}

运行效果
在这里插入图片描述


2、导出名或者导出函数


Go语言中如何想要导出当前包的函数或者变量 必须要把变量头个字符大写
小写可以理解为 c/c++中的 全局static函数 而大写则是可以导出使用 例如下方


111.go
第四行main函数 注释才可以使用

package main

import (
	"fmt"
	"../test2"
	"math"
)

func main() {
	fmt.Println(math.Pi)
	fmt.Println(FuckCOVID.Publicnum)
	//fmt.Println(FuckCOVID.privatenum)
	FuckCOVID.PublicGo()
	//FuckCOVID.privatego()
}


222.go

package FuckCOVID

import (
	"fmt"
)

var Publicnum int = 10
var privatenum int = 20

func PublicGo() {
	fmt.Println("Fuck this COVID-19 Public")
}

func privatego() {
	fmt.Println("Fuck this COVID-19 Private")
}

运行效果
在这里插入图片描述


3.1、函数参数声明方式(一)


go语言的函数参数 以及变量的声明方式与c/c++的函数 参数声明方式有太大的不同

例如变量声明
c-style int a float b double c

go-style var a int var b float var c double**

例如函数声明 两个参数的
c-style int add(int x, int y) { return x + y; }
go-style func Add(x int, y int) int { return x + y }

下方链接是解释了为什么函数 变量声明与c语言不同了
Go’s Declaration Syntax


声明一个简单的函数
111.go

package main

import (
	"fmt"
)

func add(x int, y int) int {
	return x + y
}

func main() {
	fmt.Println(add(10, 10))
}


运行效果
在这里插入图片描述


3.2、函数参数声明方式(二)


对于大量重复的参数类型 可以优化
放到最后一个参数声明即可

111.go

package main

import (
	"fmt"
)

func addthreenum(x, y, z int) int {
	return x + y + z
}

func main() {
	fmt.Println(addthreenum(10, 10, 10))
}


运行效果
在这里插入图片描述


4、函数返回值支持多值返回


go语言支持多值返回 这样对于很多功能实现就方便了
对于swap就不需要额外的中间变量 或者加减值 异或实现了

例如下方函数示例,Println会自动分隔开参数打空格
111.go

package main

import (
	"fmt"
)

func swap(x string, y string) (string, string) {
	return y, x
}

func main() {
	var x string = "first string"
	y := "second string"
	fmt.Println(x, y)
	fmt.Println(swap(x, y))
}

5、函数命名返回值


可以对返回的值进行命名 但是这个就以为这是声明在函数顶部的变量
之后则是可以对其赋值

返回值也可以直接return 这个效果就是返回了返回值中定义的变量

111.go

package main

import (
	"fmt"
)

func swap(x string, y string) (swapy string, swapx string) {
	return y, x
}

func split(sum int) (a, b int) {
	a = sum / 10
	b = sum % 10
	return
}

func main() {
	var x string = "first string"
	y := "second string"
	fmt.Println(x, y)
	fmt.Println(swap(x, y))
	fmt.Println(split(17))
}


运行效果
在这里插入图片描述


6、变量声明


go-style 声明变量
总结了有三种模式:

var num int(初始化为默认值)
var num int = 10
var num = 10(go语言主动推断类型)
num := 10(go语言推断值 省略var 但是只能在函数内部使用 显示初始化 因为函数外必须以关键字开始)


111.go

package main

import (
	"fmt"
)

var a, b, c int
var a1, b1, c1 int = 1, 2, 3

func main() {
	var x = "first string"
	y := "second string"
	var intnum int = 5
	var floatnum = 1.32
	judge := false

	fmt.Println(x)
	fmt.Println(y)
	fmt.Println(intnum)
	fmt.Println(floatnum)
	fmt.Println(judge)
	fmt.Println(a, b, c)
	fmt.Println(a1, b1, c1)
}

运行效果
在这里插入图片描述


7、变量的基础类型


Go常用的基础类型有
整数类型:(u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr(指针),byte,rune(int32 的别名)(int大小取决于系统位数 32位4字节 64位8字节)
字符(串)类型:byte,string
浮点型:float32,float64
布尔型:bool


8、变量的默认值(零值)


下面列一下基础类型的全部零值
var i int(0)
var floatnum float64(0)
var boolean bool(false)
var str string(“”)


111.go

package main

import (
	"fmt"
)

func main() {
	var intnum int
	var floatnum float64
	var boolean bool
	var str string

	fmt.Println(intnum)
	fmt.Println(floatnum)
	fmt.Println(boolean)
	fmt.Println(str)
}

运行效果
在这里插入图片描述


9、变量的类型转换


go语言的类型转换风格和c语言是相同的
只不过go语言不支持隐式类型转换 隐式类型转换无法进行正常编译

类似于c语言中的强制类型转换


111.go

package main

import (
	"fmt"
)

func main() {
	var intnum int = 10
	var floatnum float64 = float64(intnum)
	var tmpfloat float64 = 3.141592653
	var toint int = int(tmpfloat)

	fmt.Println(intnum)
	fmt.Println(floatnum)
	fmt.Println(tmpfloat)
	fmt.Println(toint)
}


在这里插入图片描述


10、变量的定义类型推导 + 常量定义


var int i
j := i

这种情况 j则是i的类型


这个则是推导 定义根据后面的推导

i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128


常量定义只是用const去取代var

const intnum int = 10
const floatnum float64 = 3.1415926

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

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

相关文章

pytorch案例代码-3

双向循环神经网络 双向循环神经网络在RNN/LSTM/GRU里都有。比如RNN cell,只是把h0和x1传入做线性变换产生h1继续传入同一个cell做线性变换,线性变换的W和b共享,沿着这个方向就把所有隐层和最后的输出算出来了。 那么其中的每个结点&#xff0…

android-apk解包打包

title: android-apk解包打包 categories: Android tags: [android, 加壳] date: 2022-09-28 10:29:51 comments: false mathjax: true toc: true android-apk解包打包, 以下所有操作都需要在配置好 java 环境下进行 前篇 android apk解包和打包 - https://blog.csdn.net/u0114…

(十五)Spring之面向切面编程AOP

文章目录基础环境AOP介绍AOP的七大术语切点表达式Spring的AOP的使用环境准备基于AspectJ的AOP注解式开发通知类型前置通知Before后置通知AfterReturning环绕通知Around异常通知AfterThrowing最终通知After关于JoinPoint切面的先后顺序通用切点表达式全注解式开发AOP基于XML配置…

9、前端笔记-CSS-CSS三大特性

三大特性:层叠性、继承性、优先级 1、层叠性(覆盖性) 给相同的选择器设置相同的样式,此时一个样式会覆盖(层叠)其他冲突的样式。 层叠性原则: 同一选择器,样式冲突,遵…

【SpringBoot】MVC配置解决跨域但仍然存在跨域

文章目录1. 跨域问题出现与解决1. 跨域问题出现与解决 检查SpringBoot中的MVC配置。 public void addCorsMappings(CorsRegistry registry) {//允许跨域访问资源定义registry.addMapping("/**")//(只允许本地的指定端口访问)允许所有.allowedOrigins("*")…

数据结构之线性表中的单链表【详解】

文章目录前言:一、单链表1.单链表和顺序表的优缺点2.单链表的概念和学习3.单链表的各个接口的实现(详解每一步)3.1.先铺垫一下大致的思路3.2.然后这边我们看一下我们大致要实现的函数有哪些3.3.接下来我们就开始实现这些代码,并且…

用信号量实现进程同步与互斥(含代码分析)

信号量简单的来说就是一个变量,代表着系统中互斥资源的数量,通常用原语来实现对信号量机制的操作。 一对原语:wait(S)也称为P操作,singnal(S)也称为V操作。S表示信号量 对于wait原语本身的内部逻辑代码如下(这里以一…

黑苹果外接显示器最优解决方案

黑苹果无法外接显示器 黑苹果外接显示器解决方案 先给解决方案 电脑端 > 安装 PC端 Duet Display买个二手电视盒子40块钱左右,还带电源电视盒子 > 安装安卓端 Duet Display(U盘安装就行)电视盒子 > 用鼠标开启开发者模式双头USB&…

SpringBoot SpringBoot 原理篇 1 自动配置 1.12 bean 的加载控制【注解式】

SpringBoot 【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】 SpringBoot 原理篇 文章目录SpringBootSpringBoot 原理篇1 自动配置1.12 bean 的加载控制【注解式】1.12.1 问题引入1.12.2 bean的加载…

【JVM技术专题】「原理专题」全流程分析Java对象的创建过程及内存布局

前言概要 对应过程则是:对象创建、对象内存布局、对象访问定位的三个过程。 对象的创建过程 对象的创建方式 java中对象的创建方式有很多种,常见的是通过new关键字和反射这两种方式来创建。除此之外,还有clone、反序列化等方式创建。 通过n…

CSS @property,让不可能变可能

本文主要讲讲 CSS 非常新的一个特性,CSS property,它的出现,极大的增强的 CSS 的能力! 根据 MDN -- CSS Property,property CSS at-rule 是 CSS Houdini API 的一部分, 它允许开发者显式地定义他们的 CSS 自定义属性&…

vue项目分环境配置打包处理

vue项目分环境配置打包处理 目录 vue项目分环境配置打包处理 本地环境配置 生产环境配置 打包处理 打包配置处理(扩展) 本地环境配置 定义需要的变量,这里定义了各种变量标识,可参考使用,自定义项目需要的变量&…

设计问卷调查有哪些技巧?

调查问卷可以很好地帮助我们进行市场调研,所以想要做出一份有效的调查问卷,首先要确定问卷的主题。明确的主题就是定基调,可以让我们的后续过程更加顺利。然后我们再开始进行题目的设置和问卷的设计等动作。不过,在问卷设计的过程…

【js】【爬虫】fetch + sessionStorage 快速搭建爬虫环境及各种踩坑

文章目录导读需求开发环境fetch介绍为什么选择fetchfetch的封装使用数据存储数据访问封装多页面处理方案数据过大,拆分处理参考资料导读 需求 一说爬虫,很多人都会向导python,不过,真正省心的方案,应当是通过js控制获…

Reactive源码分析

Reactive用来绑定引用数据类型, 例如对象和数组等,实现响应式。 Reactive API 接口 export function reactive<T extends object>(target: T): UnwrapNestedRefs<T>相关API包括readonly、createReactiveObject、shallowReadonly、isReactive、toReactive。源码运…

Eureka注册中心

文章目录一、认识服务提供者和服务调用者二、Eureka 的工作流程三、服务调用出现的问题及解决方法四、搭建 eureka-server五、注册 user-service、order-service六、在 order-service 完成服务拉取&#xff08;order 模块能访问 user 模块&#xff09;七、配置远程服务调用八、…

从入门到进阶!当下火爆的大数据技术及算法怎么还能不知道 一起来学习互联网巨头的大数据架构实践!

大数据被称为新时代的黄金和石油&#xff0c;相关技术发展迅猛,所应用的行业也非常广泛&#xff0c;从传统行业如医疗、教育、金融、旅游&#xff0c;到新兴产业如电商、计算广告、可穿戴设备、机器人等。大数据技术更是国家科技发展和智慧城市建设的基础。 当前“互联网”新业…

骨传导耳机是怎么传声的?骨传导耳机会伤害耳朵吗?

作为一个耳机发烧友&#xff0c;平时最喜欢的就是捣鼓耳机。这几年入手了几十款耳机&#xff0c;头戴式、入耳式、半入耳、有线无线都会接触一些来玩&#xff0c;其中还有骨传导耳机这个相对小众的款类。 说到骨传导耳机&#xff0c;我应该算是最早一批的用户了&#xff0c;很…

web网页设计—— 指环王:护戒使者(13页) 电影网页设计 在线电影制作 个人设计web前端大作业

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

数据结构-ArrayList解析和实现代码

arrayList结构的实现是数组结构&#xff0c;数组没有扩容机制&#xff0c;arrayList的扩容机制采用的是复制数组&#xff0c;了解你会发现ArrayList虽然实现比较简单&#xff0c;但是设计还是很巧妙的。咱们先来简单实现下.. 咱们看下定义的全局变量 1.默认初始化空间为10&am…