string -双引号包裹的:"xxx" -反引号包裹,能够换行, 注意: 区别于python,是没有单引号,三引号的 用法: var s string=` 你好 我好 你们好 ` var b string="你好\n" + "我好" + "你们好"
float32 : 有符号小数,32后7位python
float64: 64 有符号小数,32后7位redis
都是表示小数点后范围不同(代码里面没有float,只有float64和float32)数据库
complex64: 32 位实数和虚数数组
complex128: 64 位实数和虚数函数
false 和 true
指针类型(Pointer)
数组类型
结构化类型(struct)
Channel 类型
函数类型
切片类型
接口类型(interface)
Map 类型ui
单个变量指针
var 变量名 变量数据类型=变量值
多个变量code
a,b,c都为string必须3个变量类型相同
接口
var a,b,c string="1","2","3" //注意string必须是双引号
单个变量字符串
var 变量名 =变量值
多个变量
a,c为string,b为int
a,b,c三个变量类型不一样也能够声明 var a,b,c="1",2,"3"
单个变量
变量名 := 变量值 //注意点:= 必须连着不能有空格
多个变量
a,b,c都为string
a,b,c三个变量类型不一样也能够声明 a,b,c :="1",2,"3"
=
var a int a=100
const 变量名 变量类型 =值
const 变量名 =值
package main import "fmt" //程序运行期间不容许修改 //数据库,redis链接 //const关键字 常量名 =常量值 赋值一次,不容许修改 //const NAME = "cxk" //const NAME string = "cxk" const sex = true func main() { //fmt.Println(NAME) //fmt.Println(sex) //sex=false fmt.Println(sex) }
常量一旦被定义赋值后将没法第二次修改
方式一 func 函数名()(){} 方式二 func 函数名(){}
方式一 func 函数名()(返回参数1的数据类型1){}
func 函数名(参数1 类型,参数2 类型)(返回参数1的数据类型1,返回参数2的数据类型){} //若是参数1与参数2的数据类型相同 func 函数名(参数1,参数2 类型)(返回参数1的数据类型1,返回参数2的数据类型){} //若是参数1与参数2的数据类型为int,参数3数据类型为uint func 函数名(参数1,参数2 int,参数3 uint)(返回参数1的数据类型1,返回参数2的数据类型){}
//方式一 func 函数名(参数1 类型,参数2 类型){} //方式二 func 函数名(参数1 类型,参数2 类型)(){}
//方式一 func 函数名(不定长参数1 ...类型){} //有定长参数和不定长参数 func 函数名(定长参数 类型,不定长参数1 ... 类型){} //不定长的参数必须写在定长的参数后面 //不定长参数全部数据类型 func 函数名(不定长参数1... interface{}){}
//定义 func (参数一,参数二)(返回参数1的数据类型1){return 1 } //定义+调用 func (参数一,参数二)(返回参数1的数据类型1){return 1 }()
package main import "fmt" func abc()(a int,b int){ //var a,b int 至关于默认执行这条 //可是ab只在函数内生效函数外部生效 return //return 与return a,b是同样的 } func main() { fmt.Println(abc()) }
没有关键字传参
没有默认参数
丑
//函数 package main func main() { //test() //test(3,4,"xxx") //没有关键字参数一说,都按位置传,也没有默认参数 //test(3,4,"xxx") //三种方法调用 //var a int =test(3,4) //定义变量a接收返回值 //var a =test(3,4) //a :=test(3,4) //fmt.Println(a) //返回两个值,就要用两个值来接受 //a,b:=test(3,4) //这种用的多 //var a,b int=test(3,4) //var a,b =test(3,4) //fmt.Println(a,b) //若是有个值不想接收 // _,a,_:=test(3,4) //fmt.Println(a) // py中 _ 是一个真正的变量,go中,就是没有 //fmt.Println(_) test(1,2,3,4,5,5,6,7) } //func关键字 函数名(参数1 参数类型,参数2 参数类型)(){ //函数体的内容 //} //函数使用1(没有先定义再使用这一说) //func test() { // fmt.Println("我是test") //} //函数使用2 带参数 //func test(a int,b int,c string) { // fmt.Println(a+b) // fmt.Println(c) //} //函数使用3 //func test(a ,b int,c string) { // fmt.Println(a+b) // fmt.Println(c) //} ////函数使用 4 规定返回值类型 //func test(a,b int) int { // //返回a+b的结果 // return a+b //} //函数使用 5 规定返回值类型,返回多个值 //func test(a,b int) (int,int,string) { // //返回a+b的结果 // return a+b,a*b,"ok" //} //函数使用6 不定长参数 //func test(z ...int) { // fmt.Println(z) // //}
为何使用包?
为了更加好的维护代码
包的位置?
必须在GOPATH
路径的src
中
能导入的内容?
导入的内容名称必须是大写字母开头
否则没法导入包
src中的一个文件夹为一个包
包内的变量以及函数名
在同一文件夹下,就至关于同一包中,任何变量名不能进行二次定义
在同一包中,能够互相使用其余GO文件下的函数且不须要导入
go 程序中必须有一个main和一个main入口
若是不是package main
他就是一个包,他会把里面的函数都进行保存,不能有main函数
main`也是一个特殊的包,其中必需要有main函数,做为程序的入口,也就是执行这个文件的时候其中就是运行`main函数
语法:go get 第三方模块路径
文件会被安装在GOPATH路径的src文件夹下