1、把其他类型转化成字符串类型例:把指针值转换成字符串赋值给一个
比如获得的API值需要去特殊符号1、把字符串 s 左边的+ 右边的- 去掉package mainimport ( "fmt" "strings")func main() { s := "++-+1234567-
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,
摘要效果实现过程效果调用阿里云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
yum install epel-release -yyum install golang设置代理
Go语言的方法声明和普通函数声明类似,只是在函数名前面多了一个参数。这个参数把这个方法绑定到这个参数对应的类型上一. 方法其实是接收者(或者说receiver)上的一个函数。特殊类型的函数罢了二. 接受者必须是内置类型或者结构体的一个值或者指针1、基本写法package mainimport "fmt"//定义一个person结构体type person struct { name string age int8}//定义函数NewPerson来返回person结构体数据,不然不
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
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
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
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(
匿名函数就是没有函数名得函数,多用于实现回调函数和闭包1、匿名函数一般存在于主函数内部,是没有名字的函数,格式为:func (){ }package mainimport "fmt"var a int = 3func main() { func (){ fmt.Println("匿名函数:",a) //匿名函数可以直接引用主函数变量,并可以改变主函数变量值 a++ //自加操作,改变了主函数的值 }()
直接上代码,看注释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现在就是一个闭
在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
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
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的类型:%
接口的主要工作是仅提供由方法名称,输入参数和返回类型组成的方法签名集合。 由类型(例如struct结构体)来声明方法并实现它们。关键字:interface1、使用结构体声明方法实现接口调用//接口//先定义结构体--> 声明方法--> 创建接口-->调用接口package mainimport "fmt"//定义三个结构体,之所以定义结构体,是因为要创建方法的前提是创建结构体type dog struct { name string}type cat st
写一个最简单的web服务,其中应用了读取当前目录的文件package mainimport ( "fmt" "io/ioutil" "net/http")func sayHello(w http.ResponseWriter,r *http.Request) {//按Crtl键可以看到该ioutil函数返回两个值,所以下面给了两个值,一个是b,一个是空值 b , _ := ioutil.ReadFile("./hello") //使用ioutil函数可以引用文件位置,读取文件内容
目录结构: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 } //定义
默认情况下,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.
在上一篇博客博客的基础上,改成模板嵌套方式制作流程:1、同样是先定义一个处理接口/tmpl
在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和端口号
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("数字错误")
摘要切片切片的构造切片的类型切片的拷贝切片的遍历切片的追加切片的删除切片切片(slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的封装。它非常灵活,支持自动扩容。与数组的区别:1、定义写法类似切片:var name []string数组:var name [5]string 数组必须指定长度数字2、相互转换切片可以通过数组转换而来,转换成切片之后,就可以扩容了package mainimport "fmt"func main() { var a = [5]i
安装vim 和vim-go组件即可yum install vim vim-go再打开go语言代码,焕然一新哈哈????
摘要类型比较语法比较长度和容量规则声明比较初始化比较相互转换修改值的区别本篇只进行比较!类型比较数组:值类型切片:引用类型map:引用类型语法比较数组的语法:var name [5]string 数组必须指定长度数字切片的语法:var name []stringmap的语法:var name map[string]int 必须指定类型长度和容量规则数组:固定长度,无容量。数组的长度在声明时就要给出切片:动态长度,有容量,容量可以理解成可达到的最大长度切片可以由数组构造来,不改变长度
在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 函数")
使用指针可实现,因为修改的是内存地址,每一个内存地址对应一个值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)}...
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号