网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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)
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事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行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!