go学习笔记

go的for循环语句

有3个不一样的形式

1,和C的一样,只是没有()

for 初始化;循环条件; 赋值表达式 {}

2,仿照C的while

for 循环条件 {}

3, 只是第一种的简化形式

for {}

如果想用 each:range形式 就可以

for key,val:=range map{

......

}

eg:

str :=[]string { "good","good","study"}

for i,s:= range str {

fmt.Printf("第%d的 str的字符串的是%s",i,s)

}

也可以使用 key,_ 或者 _,val 来获取其中的某一个

比如实现一个 1-10的加法运算

sum :=0

for i:=1;i<=10;i++ {

sum+=i

}

这里面的 ( 1;2 ;3 )都是可以选填的,需要就写,不需要可以不写

循环控制语句

1,break 用于跳出xun'huan

2,continue,用于跳出当前的循环语句,进行下一轮循环

3,goto,讲跳转到下一个被标记的语句

go的函数定义

func func_name (参数列表 ) 返回类型 {

}

这里的函数可以返回多个值

func func_name ( para_list) (int ,string ){

var a int

var b string

return a,b

}

变量的作用域

局部变量

它们的作用域只在函数体内,参数和返回值变量也是局部变量。

全局变量

全局变量可以在整个包甚至外部包(被导出后)使用

如果局部和全局变量重名,优先考虑近的局部变量

整型

有符号整型:

int8(-128 ->127)

int16(-32768->32767)

int32(-2,147,483,648->2,147,483,647)

int64(-9,223,372,036,854,775,808->9,223,372,036,854,775,807)

int

:在32位操作系统上使用 32位

:在64位操作系统上使用64位

无符号整数:

uint8(0->255)

uint16(0->65,535)

uint32(0->4,294,967,295)

uint64(0->18,446,744,073,709,551,615)

uint

在32位操作系统上使用32位

在64位操作系统上使用64位

整型之间的数据转换

使用 类型+ ()

var a int8=1

var b int16 = 10

var c int = int(a)+int(b)

注意,如果是位数多向少的转换,容易出现值的失真

整型和字符串的转换

res ,err:= strconv.Itoa(整型) 整型转换为字符串 这里要求是int ,不是其他的int8 什么的

fmt.Println(res,reflect.TypeOf (res))

res1,err:= strconv.Atoi(res) //这里的err表示错误信息

fmt.Println(res1,reflect.TypeOf(res1)) 是字符串转换为整型(必须是数字类型的字符串)

整型的进制转换

strconv.FormatInt(int64(整型),n进制)//这里的整型必须是int64,返回的是string

其他进制转换为整型

strconv.ParseInt(data,n进制,0-64)//把string 类型的data转换为n进制,最后那个是约束范围的,但是返回的仍然是int64

常见的math调用

fmt.PrintIn(math.Abs(-19))// 取绝对值

fmt.Printin(math.Floor(3.12))// 向下取整

fmt.Println(math.ceil(3.14))// 向上取整

fmt.PrintIn(math.Round(3.3478))// 就近取整

fmt.Printin(math.Round(3.5478*100)/100)//保留小数点后两位

fmt.Printn(math.Mod(11,3))//取余数,同11 %3

fmt.Println(math.Pow(2,5))// 计算次方,如:2的5次方

fmt.Println(math.Pow10(2))//计算10次方,如:2的10次方

fmt.Println(math.Max(1,2))// 两个值,取较大值

fmt.Printin(math.Min(l.2))//两个值,取较小值

new

var a *int //初始化了一个指向nil的指针

b:= new (int) //初始化一个指针,并且指向一个分配int类型(初始为0值)

big.Int (超大整型)

var a big.Int //0值的超大整型

var b *big.Int // 指向nil的超大整型指针//很少用

var c new (big.Int) //分配一个超大整型,初始为0,这个c指向这个区域

a.SetInt64(2025) //在a里面存一个2025

a.SetString("20250109",10)//把字符串以10进制存入a

c.SetInt64(2025)

c.SetString("20250109",10)

运算

a1 := new (big.Int)

a2 := new (big.Int)

a1.SetInt64(100)

a2.SetInt64(200)

res:=new (big.Int)

res.Add(a1,a2)//+

res.Sub(a1,a2)//-

res.Mul(a1,a2)//*

res.Div(a1,a2)// 得到商

MOD := new (big.Int)

res.DivMod(a1,a2,MOD)//res记录商,MOD记录余数

因为是指针,可以用 res.Int64/res.String 返回对应内容的类型

可以把声明和赋值合成为一行

a1=big.NewInt()

布尔类型

bool

res.err=strconv(字符串)

如果字符串是1,t,T,true,TRUE,True返回真

0,f,F,false,FALSE,False返回假

其他返回假,同时返回错误信息

相关推荐
云上艺旅16 小时前
K8S学习之基础七十四:部署在线书店bookinfo
学习·云原生·容器·kubernetes
你觉得20517 小时前
哈尔滨工业大学DeepSeek公开课:探索大模型原理、技术与应用从GPT到DeepSeek|附视频与讲义下载方法
大数据·人工智能·python·gpt·学习·机器学习·aigc
A旧城以西18 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
无所谓จุ๊บ18 小时前
VTK知识学习(50)- 交互与Widget(一)
学习·vtk
FAREWELL0007518 小时前
C#核心学习(七)面向对象--封装(6)C#中的拓展方法与运算符重载: 让代码更“聪明”的魔法
学习·c#·面向对象·运算符重载·oop·拓展方法
吴梓穆18 小时前
UE5学习笔记 FPS游戏制作38 继承标准UI
笔记·学习·ue5
Three~stone19 小时前
MySQL学习集--DDL
数据库·sql·学习
齐尹秦19 小时前
HTML 音频(Audio)学习笔记
学习
V---scwantop---信19 小时前
英文字体:大胆都市街头Y2Y涂鸦风格品牌海报专辑封面服装字体 Chrome TM – Graffiti Font
笔记·字体
瞌睡不来19 小时前
(学习总结32)Linux 基础 IO
linux·学习·io