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返回假

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

相关推荐
黑科技Python1 小时前
生活中的“小智慧”——认识算法
学习·算法·生活
Yupureki1 小时前
从零开始的C++学习生活 16:C++11新特性全解析
c语言·数据结构·c++·学习·visual studio
青云交1 小时前
Java 大视界 -- Java 大数据在智能教育学习社区互动模式创新与用户活跃度提升中的应用(426)
java·大数据·学习·flink 实时计算·智能教育社区·互动模式创新·用户活跃度
武清伯MVP3 小时前
阮一峰《TypeScript 教程》学习笔记——类型映射
笔记·学习·typescript
月阳羊3 小时前
【论文学习与撰写】Mathtype的安装与word插件安装
学习·word
ouliten3 小时前
cuda编程笔记(34)-- 内存访问控制与缓存提示
笔记·cuda
BreezeJuvenile4 小时前
MAX30102脉搏血氧传感器相关内容整理(理论版)
学习·max30102·心率血氧传感器
报错小能手4 小时前
C++笔记(面向对象)深赋值 浅赋值
c++·笔记·学习
一介书生-0074 小时前
2025-10-27 Java AI学习路线
java·人工智能·学习
superlls4 小时前
(场景题)怎么实现数据的批量插入?
笔记·mybatis