GOLANG
go语言基础知识
登云时刻
花有重开日,人无再少年,加油,陌生人!
展开
-
Go语言中strings使用
比如获得的API值需要去特殊符号1、把字符串 s 左边的+ 右边的- 去掉package mainimport ( "fmt" "strings")func main() { s := "++-+1234567-+--" //去除首部第一次匹配到的关于“+”符号的,和尾部第一次匹配到的关于“-“符号的字符 s1 := strings.TrimPrefix(s,"+") s2 := strings.TrimSuffix(s1,"-") fmt.Printf("%v\n", s2)原创 2021-11-30 11:29:14 · 634 阅读 · 0 评论 -
持续更新:Go语言常用语句总结
1、把其他类型转化成字符串类型例:把指针值转换成字符串赋值给一个变量 ListHostnameip := fmt.Sprint(*List)2、使用结构体构造函数,使用指针类型节约内存开销type person struct { city,name string age int}func newperson(city1,name1 string,age1 int) *person { return &person{ city: city1, name: name1,原创 2021-08-25 16:34:45 · 458 阅读 · 0 评论 -
go语言实现调用阿里云api,获取hostname和ip字段值,输出exl表
摘要效果实现过程效果调用阿里云EMR服务API,获取集群中的主机名和ip地址,输出到exl表中实现过程例子:调用阿里云EMR服务的api,获取集群主机名和ip,输出到exl表1、去阿里云api文档,查找接口文档我这里只想获取集群的hostname和ip信息,所以我这里选择的是【查询集群主机列表】即可满足我的需求2、把代码赋值到自己电脑中编辑1)使用go mod init emr初始化mod仓库2)直接get下远程仓库代码,使用go mod tidy 自动获取依赖文件go get g原创 2021-08-17 14:00:24 · 1159 阅读 · 0 评论 -
Go语言,修改其他函数内部的值
使用指针可实现,因为修改的是内存地址,每一个内存地址对应一个值package mainimport "fmt"func a(x int) { x = 100}func b(y *int) { *y = 200}var z = 1func c() { b(&z) a(z)}func main() { c() fmt.Println(z)}...原创 2021-07-15 11:55:55 · 430 阅读 · 0 评论 -
Go语言,panic和recover 遇到错误继续处理
在go语言中,如果报错了,会终止程序继续往下操作,可以使用panic和recover实现挽救要终止的进程使用panic可以控制代码在什么阶段停止注意:1、recover()必须搭配defer使用2、defer 一定要在可能引发panic的语句之前定义package mainimport "fmt"func a() { fmt.Println("a 函数")}func b() { panic("b error")}func c() { fmt.Println("c 函数")原创 2021-07-15 11:14:10 · 1604 阅读 · 0 评论 -
Go语言 数组、切片、map的区别
摘要类型比较语法比较长度和容量规则声明比较初始化比较相互转换修改值的区别本篇只进行比较!类型比较数组:值类型切片:引用类型map:引用类型语法比较数组的语法:var name [5]string 数组必须指定长度数字切片的语法:var name []stringmap的语法:var name map[string]int 必须指定类型长度和容量规则数组:固定长度,无容量。数组的长度在声明时就要给出切片:动态长度,有容量,容量可以理解成可达到的最大长度切片可以由数组构造来,不改变长度原创 2021-07-09 14:21:02 · 1242 阅读 · 3 评论 -
Go语言之连接数据库,并判断数据库是否成功
在go语言中,连接数据库方式也是非常简单的,需要引用包database/sql和驱动_ "github.com/go-sql-driver/mysql"代码实例package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql")func main() { //用户名密码:root\123456 //@tcp:已tcp连接 //(192.168.84.152:13306):数据库ip和端口号原创 2021-06-08 17:47:10 · 2097 阅读 · 0 评论 -
CentOS7 yum方式安装golang程序
yum install epel-release -yyum install golang设置代理原创 2021-05-23 17:12:25 · 811 阅读 · 0 评论 -
Go语言代理proxy设置
关于 Go proxyGOPROXY由于国内的网络环境,我们可以通过配置GOPROXY避免DNS污染导致的模块拉取缓慢或失败的问题,加速你的构建代理链接阿里云Go Module代理仓库服务Goproxy 中国配置方法打开你的终端并执行:$ go env -w GOPROXY=https://goproxy.cn,direct完成。macOS 或 Linux打开你的终端并执行:$ export GOPROXY=https://goproxy.cn或者$ echo “export G转载 2021-05-17 19:41:29 · 5570 阅读 · 0 评论 -
Go语言之自定义模板,修改模板默认变量符号
默认情况下,Go语言引用HTML文件,HTML文件中使用{{ }},使用Delims参数可以修改默认的符号目录结构:main.goindex.htmlmain.go内容package mainimport ( "fmt" "html/template" "net/http")func index(w http.ResponseWriter, r *http.Request) {//使用Delims参数可修改默认符号 t,err := template.New("index.原创 2021-05-12 18:03:34 · 743 阅读 · 0 评论 -
Go语言之自定义模板,引用多个模板html文件嵌套使用
在上一篇博客博客的基础上,改成模板嵌套方式制作流程:1、同样是先定义一个处理接口/tmpl,当访问到http://ip:9090/tmpl时,会处理ti函数2、定义t1函数,这个函数解析了两个模板1.tmpl 2.tmpl,这里需要注意的是第一个模板是父模板,其中包含了第二个模板,所以第一个模板必须先写3、1.tmpl使用define函数生成了一个内部模板,而2.tmpl是与1.tmpl同一目录级别的文件。这里只是引申一下define知识点目录结构:main.go1.tmpl2.tmpl原创 2021-05-12 16:49:51 · 1215 阅读 · 0 评论 -
Go语言之自定义模板,函数体解析到HTML模板
目录结构:main.gop6.tmplmain.go内容package mainimport ( "fmt" "html/template" "net/http")func f1(w http.ResponseWriter, r *http.Request) { //嵌套一个函数,要么赋值一个,要么第二个值必须是error k := func(name string) (string, error) { return name + "Gin框架", nil } //定义原创 2021-05-12 15:51:33 · 524 阅读 · 0 评论 -
Go语言写一个最简单的本地web服务
写一个最简单的web服务,其中应用了读取当前目录的文件package mainimport ( "fmt" "io/ioutil" "net/http")func sayHello(w http.ResponseWriter,r *http.Request) {//按Crtl键可以看到该ioutil函数返回两个值,所以下面给了两个值,一个是b,一个是空值 b , _ := ioutil.ReadFile("./hello") //使用ioutil函数可以引用文件位置,读取文件内容原创 2021-04-23 16:19:36 · 694 阅读 · 0 评论 -
Go语言基础之接口
接口的主要工作是仅提供由方法名称,输入参数和返回类型组成的方法签名集合。 由类型(例如struct结构体)来声明方法并实现它们。关键字:interface1、使用结构体声明方法实现接口调用//接口//先定义结构体--> 声明方法--> 创建接口-->调用接口package mainimport "fmt"//定义三个结构体,之所以定义结构体,是因为要创建方法的前提是创建结构体type dog struct { name string}type cat st原创 2021-04-12 17:27:51 · 262 阅读 · 0 评论 -
GO语言之方法
Go语言的方法声明和普通函数声明类似,只是在函数名前面多了一个参数。这个参数把这个方法绑定到这个参数对应的类型上一. 方法其实是接收者(或者说receiver)上的一个函数。特殊类型的函数罢了二. 接受者必须是内置类型或者结构体的一个值或者指针1、基本写法package mainimport "fmt"//定义一个person结构体type person struct { name string age int8}//定义函数NewPerson来返回person结构体数据,不然不原创 2021-04-10 09:45:35 · 470 阅读 · 0 评论 -
GO语言之结构体
1、基本写法package mainimport "fmt"type person struct { //结构体关键字:struct city, name string age int8}func main() { var p person //引用上面定义的结构体名称person p.name = "GO语言" p.city = "GIN框架" p.age = 18 fmt.Println(p) fmt.Printf("p的类型:%原创 2021-04-09 15:13:43 · 246 阅读 · 0 评论 -
GO语言之类型
1、自定义类型使用关键字type自定义类型自定义类型具有基本数据类型(string、整型、浮点型、布尔型)的特性2、别名类型是Go1.9以后加入的新功能,与基本数据类型有完全一样的功能,相当于小名package mainimport "fmt"func main() { type MyInt int var a MyInt = 10 fmt.Printf("a的类型是%T\n",a) type MyInt1 = int var b MyInt1 = 20 fmt.Prin原创 2021-04-08 17:40:51 · 218 阅读 · 0 评论 -
GO语言之指针
在GO语言中指针是不能进行运算和偏移,是安全指针1、标准写法/*取内存地址符:&根据内存地址取值:**/package mainimport "fmt"func main() { a := 101 b := &a c := *b fmt.Println(a,b,c) }输出解决:101 0xc00000a098 1012、编写一个指针函数,传入的所有内存值都会输出成函数值package mainimport "fmt"func main() { a原创 2021-04-08 17:08:57 · 232 阅读 · 0 评论 -
GO语言之闭包
直接上代码,看注释1、闭包普通格式package mainimport ( "fmt") func G() func() { //把函数作为一个返回值,函数格式:func 名称G(参数可写name string)返回值func() { } name := "GIN框架" return func() { //返回函数 fmt.Println("GO语言", name) } }func main() { O :=G() //O现在就是一个闭原创 2021-04-08 16:00:16 · 597 阅读 · 0 评论 -
GO语言之匿名函数
匿名函数就是没有函数名得函数,多用于实现回调函数和闭包1、匿名函数一般存在于主函数内部,是没有名字的函数,格式为:func (){ }package mainimport "fmt"var a int = 3func main() { func (){ fmt.Println("匿名函数:",a) //匿名函数可以直接引用主函数变量,并可以改变主函数变量值 a++ //自加操作,改变了主函数的值 }()原创 2021-04-08 14:40:39 · 247 阅读 · 0 评论 -
GO语言之map类型
map主要由键值对(”key = value”)字符串组成。1、声明一个nil的map类型package mainimport "fmt"func main() { //声明一个map类型的键值对,是nil类型 var a map[string]int fmt.Println(a,a==nil) //输出结果 map[] true2、先声明类型,再给map赋值,使用等号 //给map类型赋值 var b =make(map[string]int,8) fmt.Println(原创 2021-04-07 18:04:15 · 717 阅读 · 0 评论 -
GO语言使用技巧
1、在代码中不注重格式缩进问题时,可使用go fmt name.go ,go语言会帮助我们重新整理缩进2、在main函数外部是不允许出现非关键字的字段,如下面的代码中,x :=100在main主函数外,是不允许的package mainimport "fmt"x := 100func main() { var num2 int = 10 var num1 = 20 //普通推导 num :=30 // :=就是短自动推导类型 fmt.Println(num,num1,n原创 2021-04-07 15:30:01 · 447 阅读 · 0 评论 -
GO语言之函数
package main import "fmt" //引入fmt程序包func main() { a := 100 b := 200 c := 300 sum1,sum2,sum3 := Add(a,b,c) //这里调用了Add函数,并必须赋予三个变量,因为Add函数返回3个值,要不然会报错,其中a对应Add函数的a1,b对应a2,c对应a3;sum1对应的suma,sum2对应的是sumb,sum3对应的是sumc fmt.Println(sum1,su原创 2021-04-02 11:27:50 · 404 阅读 · 0 评论 -
Go语言之切片
摘要切片切片的构造切片的类型切片的拷贝切片的遍历切片的追加切片的删除切片切片(slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的封装。它非常灵活,支持自动扩容。与数组的区别:1、定义写法类似切片:var name []string数组:var name [5]string 数组必须指定长度数字2、相互转换切片可以通过数组转换而来,转换成切片之后,就可以扩容了package mainimport "fmt"func main() { var a = [5]i原创 2021-07-07 16:17:43 · 240 阅读 · 0 评论 -
GO语言之数组
GO语言中切片与数组非常相似,最大差别在于[4],[] 括号中有没有数字切片类型nil切片:var a []int,这种写法是没有初始化的,未声明内存,不能直接使用普通切片:var a []int{1,2,3} 这种写法后面带{},代表初始化切片,申请内存,并赋值1,2,31、共用底层内存数据 a := make([]int,3) //使用make定义一个切片类型 b := a //声明b==a b[0] = 100 //赋值切片b第一个元素值为100 fmt原创 2021-04-07 14:36:16 · 426 阅读 · 0 评论 -
Go语言之流程控制
Go语言中也是有if、when、for等判断1、if编写main.go文件package mainimport "fmt"func main() { var score = 86 if score >= 90{ fmt.Println("A") }else if score >75{ fmt.Println("B") }else if score >=0 { fmt.Println("C") }else { fmt.Println("数字错误")原创 2021-07-06 16:57:11 · 395 阅读 · 0 评论