2024年Go语言基础(一)数据类型、条件、函数(3),2024年最新熬夜整理蚂蚁金服Golang高级笔试题

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

strconv.FormatInt

strconv.FormatUint

//string转float

strconv.ParseFloat

//float转string

strconv.FormatFloat

int到float或者float到int 直接使用float(i) 或者 int(f) 直接进行转换即可




[]( )条件语句

------------------------------------------------------------------



//条件语句

var index = 0



switch index {

case 1:

	break

case 2:

	break

default:

	break



}

// 循环,…代表不定参

func test(a int, b …string) (string, int) {

for i := 0; i < 20; i++ {

	if i > 10 {

		break

	}

	fmt.Println(i)

}



//加强for循环

for i, data := range b {



	fmt.Println("下标", i)

	fmt.Println("数据", data)

}

//不使用的变量可以用匿名变量(_)接收

for _, data := range b {



	fmt.Println("数据", data)

}



return "我的", 999

}




[]( )函数

----------------------------------------------------------------



//函数首字母大写可以被其他包使用,小写本包使用

func sums() {

dosum(1,2,3,4,5)

}

//函数参数为不定参,传递方式为c[0:]…

func dosum(c …int) {

sum("aaa", c[0:]...)  //从0开始

sum("aaa", c[2:]...)  //从2开始

sum("aaa", c[:2]...)  //从0到2,不包含2

sum("aaa", c[1:3]...) //从1到3,不包含3

}

//不定参入参,多个返回类型

func sum(str string, arg …int, ) (int, string, string, int) {

b := arg[0]

return b+45,"我",str,66

}




### []( )自定义函数类型



//自定义函数类型(类似string,int,float),函数类型其实就是一个指针

type countString func(string, int) (int, string,int)

func tocount(s string,i int)(int, string,int) {

return 1,"5斤",78

}

func ccs(str countString) {

}

//定义并使用

var cs countString

cs = tocount

cs("牛肉",89)

ccs(cs)



### []( )匿名函数



//匿名函数

func sums() {

//在函数内部定义一个匿名函数,函数后面跟(),代表调用

func(a int, b int) {

	h := a + b

	fmt.Println(h)

}(1, 2)



//方式二

f := func(a int, b int) {

	h := a + b

	fmt.Println(h)

}

f(1, 2)

}




### []( )递归函数



//递归函数

func counts(a int) {

if a == 1 {

	return

}

fmt.Println("当前值", a)



counts(a - 1)

}




[]( )多目录编程

-------------------------------------------------------------------



开发工具:[GoLand]( ) (https://www.jetbrains.com/go/)  

同级别目录多go文件编程,  

golang edit confingration 设置runkind 为directory 和设置directory 路径为当前go文件所在目录



不同级别目录多文件编程,  

需要用包名.函数执行



[]( )数组

----------------------------------------------------------------



//声明数组方式一

var ages [10]int

ages[0] = 11

 //声明数组方式二

var names = [10]int{2, 3}

//修改元素

names[5] = 22



//二维数组方式一

var list [3][5]int

list[0][0] = 12

list[0][1] = 13

list[1][1] = 13



//二维数组方式二

var list2 = [3][5]int{{1, 2}, {3, 4}}



[]( )切片(自动扩容的数组)

-------------------------------------------------------------------------



 //切片(动态数组),建议用切片代替普通数组

var names2 = []int{2, 3, 5, 67, 78}

var names3 = []int{1: 20, 5: 30}    //下标:元素

var names4 = [...]int{1: 20, 5: 30} //下标:元素

//二维切片(动态数组),建议用切片代替普通数组

var list3 = [][]int{{1, 2, 6, 7, 8, 9}, {3, 4}}

var list4 = [][]int{1: {1, 2, 6, 7, 8, 9}, 5: {3, 4}} //下标:元素

var list5 = [][]int{1: {1: 1, 3: 2, 6,}, 5: {3, 4}}   //下标:元素



//长度

lens := len(names2)

//容量

caps := cap(names2)

//赋值不能超过当前切片范围,不然下标越界

//names2[10] = 2

//往切片中添加数据,append时,如果超出容量会自动扩容,为上一次容量*2,超过1024字节,则每次扩容1/4

ints := append(names2, 5)

//截取切片(从1到3,不包含下标3)

ints2 := names2[1:3]

fmt.Println("截取", ints2)

//拷贝切片

var cname = make([]int, 4)

var length = copy(cname, names2) //开辟独立空间,修改copy后的数据不影响原数据



[]( )字符串常用方法

---------------------------------------------------------------------



var a = "积极,你好,你真好"

var c = "    积   极,你好,   你真   好    "

var d = "===积===   极===你好,   你真好==="

var b = "你"

var result = strings.Contains(a, b) //a包含b

var stringlist = []string{"138", "8765", "9865"}

var sresult = strings.Join(stringlist, "-")

var index = strings.Index(a, b)             //b在a第一次出现的下标6的位置,中文一个文字3个index

var rstr = strings.Repeat(b, 10)            //将字符串重复10次

var rep = strings.Replace(a, "你", "you", 2) //2代表只替换2次,<0 代表全部替换

var rep2 = strings.ReplaceAll(a, "你", "you")

//根据逗号截取

var sp = strings.Split(a, ",")

//去除字符串首尾指定内容

var tri = strings.Trim(c, " ")

var tris = strings.Trim(d, "=")

//去除首尾空格

strings.Fields(" ")



[]( )字符串类型转换

---------------------------------------------------------------------



str := "hello would"

//字符串转为字符切片

ss := []byte(str) //强制类型转换

//字符切片转为字符串

newstr := string(ss)

fmt.Println("字符切片", ss)

fmt.Println("切片转为字符串", newstr)



for i := 0; i < len(ss); i++ {

	fmt.Printf("%c", ss[i])

}



//字符串转换

bstr := strconv.FormatBool(true)

boo, err := strconv.ParseBool("false")

inttostr := strconv.Itoa(123)

strtoint, err := strconv.Atoi("345")

strconv.ParseInt("12345", 10, 64)

strconv.ParseFloat("4.123", 64)



//其他类型转成切片

slice := make([]byte, 0, 1024)

slice = strconv.AppendBool(slice, true)

slice = strconv.AppendInt(slice, 234, 10)

fmt.Println("转成切片:", string(slice))



if err != nil {

	fmt.Println("转换出错")

} else {

	fmt.Println(boo)

	fmt.Println(inttostr)

	fmt.Println(strtoint)

}



[]( )map

-----------------------------------------------------------------



//方式一

var mymap map[int]string = map[int]string{12: "张飞", 22: "诸葛亮", 2: "刘备"}

mymap[12] = "飞飞"

fmt.Println("map", mymap)



for k, v := range mymap {

	fmt.Println(k)

	fmt.Println(v)

	fmt.Println(mymap[k])

}



//方式二

//map的长度是自动扩容的

newmap := make(map[string]string)

newmap["1"] = "菲菲"

newmap["11"] = "看看"



fmt.Println(newmap)



//map中保存数组

strs := []string{"飞机", "火车"}

strs2 := []string{"轮船", "看看"}

mm := make(map[int][]string)



mm[0] = strs

mm[22] = strs2

fmt.Println(mm)



//根据key删除元素

delete(mm, 22)

//可以用作判断是否存在某个key 的值

value, ok := mm[888]

if ok {

	fmt.Println(value)

} else {

	fmt.Println("未找到数据")

}



[]( )结构体

-----------------------------------------------------------------



//结构体

type User struct {

id   int

name string

age  int

}

func main() {

uu := User{2, "诸葛亮", 35}

var u2 = User{id: 3, name: "刘备", age: 56}



var user User

user.name = "张飞"

user.age = 56

user.id = 1

fmt.Println(uu)

fmt.Println(u2)

fmt.Println(user)



//结构体名默认指向第一个成员地址

fmt.Printf("%p\n", &uu)

fmt.Printf("%p\n", &uu.id)

fmt.Printf("%p\n", &uu.name)



if uu == u2 {

	//比较两个结构体所有成员值是否相同

}



//结构体数组

var suts1 = [2]User{

	{1, "张飞", 32}, {3, "方法", 32},

}

//结构体切片

var suts2 = []User{

	{1, "张飞", 32}, {3, "方法", 32},

}

//往切片中添加结构体

stu3 := append(suts2, User{3, "11", 33})

fmt.Println(suts1)

fmt.Println(suts2)

fmt.Println(stu3)



//结构体放在map中使用

m := make(map[int]User)

m2 := make(map[int][]User)



m[0] = User{1, "ff", 33}

m[1] = User{2, "统一", 2}



m2[0] = []User{{3, "gg", 2}, {4, "ww", 56}}

m3 := append(m2[0], User{6, "hj", 67})

delete(m, 0)

fmt.Println(m)

fmt.Println(m2)

fmt.Println(m3)

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

中添加结构体

stu3 := append(suts2, User{3, "11", 33})

fmt.Println(suts1)

fmt.Println(suts2)

fmt.Println(stu3)



//结构体放在map中使用

m := make(map[int]User)

m2 := make(map[int][]User)



m[0] = User{1, "ff", 33}

m[1] = User{2, "统一", 2}



m2[0] = []User{{3, "gg", 2}, {4, "ww", 56}}

m3 := append(m2[0], User{6, "hj", 67})

delete(m, 0)

fmt.Println(m)

fmt.Println(m2)

fmt.Println(m3)

[外链图片转存中…(img-LXgbMscM-1715653952521)]
[外链图片转存中…(img-TryaJaDF-1715653952521)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值