2defer: (1).概念: ①.当函数返回时,执行defer语句.因此,可以用来做资源清理. ②.多个defer语句,按先进后出的方式执行(最晚的先执行). ③.defer语句中的变量,在defer声明时就决定了. ④.举例:  varaint=111  deferfmt.Println(a)   //第3执行,打印值为111.在defer定义时,是什么值就是什么值.跟后面没关系.  deferfmt.Println("333") //第2执行,因为先进后出,先入栈后出.  a=222  fmt.P...

strings.TrimSpace(strstring):去掉字符串首尾空白字符strings.Trim(strstring,cutstring):去掉字符串首尾cut字符strings.TrimLeft(strstring,cutstring):去掉字符串首cut字符strings.TrimRight(strstring,cutstring):去掉字符串首cut字符 strings.Field(strstring):返回str空格分隔的所有子串的slicestrings.Split(strstring,splitstring):返回strsplit分隔的所有子串的slice strings...

  dy78R63Mycs7   2023年11月13日   17   0   0 子串字符串子串字符串

函数: 声明:  func函数名字(参数列表)(返回值列表){} 举例:  funcadd(){}  funcadd(aint,bint)int{}  funcadd(aint,bint)(int,int){} 特点:  a.不支持重载,一个包不能有两个名字一样的函数.  b.函数也是一种类型,一个函数可以赋值给变量(这个变量是一个指针指向函数地址).  c.匿名函数  d.多返回值  e.type定义新的类型:typeaddFuncfunc(int,int)int =&gt...

1.数据类型: (1).bool类型(只能存true和false) (2).数字类型:主要有int(4个字节)、int8(1个字节,8是8个bit位)、int16(2个字节)、int32(3个字节)、int64(4个字节)、uint8(无符号)、uint16、uint32、uint64、float32(4个字节)、float64 (3).字符类型: 语法:  varabyte  varabyte='c' 单引号 8个bit位,1个字符

字符串操作: 判断字符串s是否以prefix开头:  strings.HasPrefix(sstring,prefixstring)bool  如:判断一个url是否以http://开头,如果不是,则加上http://. 判断字符串s是否以suffix结尾:  strings.HasSuffix(sstring,suffixstring)bool  如:判断一个路径是否以"/"结尾,如果不是,则加上/. 判断str在s中首次出现的位置,如果没有出现,则返回-1:  strings.Index(sstring,strstrin...

1.1类型转换: 不同的类型不能直接赋值类型转换,type(variable),比如:varaint=8;varbint32=int32(a) 2.操作符: 逻辑操作符:、!=、<、<=、>和>=数学操作符:+、-、、/等等 相关操作符:!、&&、||

(4).字符串类型: 语法:  varstrstring 字符串表示两种方式:  a.双引号  b.`` (反引号,不会转义) 多个字符组成 (5).指针类型: 普通类型,变量存的就是值,也叫值类型 获取变量的地址,用&,比如:varaint,获取a的地址:&a 指针类型,变量存的是一个地址,这个地址存的才是值 获取指针类型所指向的值,使用:,比如:varpint,使用p获取p指向的值varaint=55varpint=&a0xefefefe->5

(5).扩展: 对同一个go文件的init()调用顺序是从上到下的. 对同一个package中不同文件是按文件名字符串比较"从小到大"顺序调用各文件中的init()函数.   a.注意大写的文件名会优选于小写的文件名. 对不同的package,如果不相互依赖的话,按照main包中"先import的后调用"的顺序调用其包中的init(). 如果package存在依赖,则先调用最早被依赖的package中的init().

(4).总结: 引用顺序是:main.go->add.go->b.go 编译顺序是:main.go<add.go<b.go  a.先执行b.go的全局变量初始化、init函数.  b.再执行add.go的全局变量初始化、init函数.  c.再执行main.go的全局变量初始化、init函数. 上面add.go和b.go都有Age,会不会产生覆盖?  a.它们属于不同的包名,虽然是同样的名字.一个是cale.Age,一个是b.Age.  b.如果在calc下面再创建一个go文件,定义一个Age变量,就会报...

8.综合: (1).test/b/b.go: packageb import"fmt" varAgeint=100 funcinit(){ fmt.Println("b'sAgeis",Age) Age=20 fmt.Println("b'sAgeis",Age) } (2).test/calc/add.go: packagecalc import( _"test/b" ) varAgeint=50 funcinit(){ Age=10 } (3).test/main/main.go: packagemain import( "fmt" "test/calc" ) fu...

  dy78R63Mycs7   2023年11月02日   54   0   0 go包go包

7.包的只初始化,不引用: (1).test/b/b.go: packageb funcinit(){ } (2).test/main/main.go: packagemain import( "test/b"//报错 ) 注: 当导入一个包,但是并没有做任何使用,会报错. 包的只初始化,不引用里面任何的函数和变量:  import(   _"test/b"  )

  dy78R63Mycs7   2023年11月02日   26   0   0 初始化初始化

(3).总结: 编译语言,不像其它脚本语言(边解析边执行). go中所有的代码要进行编译.必须要有一个入口函数,在这个函数中去执行代码. int在赋值的时候没有函数入口,就只是在一个全局的区域里面.任何执行的语句,都要在函数以内执行. 而varAgeint=10表示在编译的时候,就直接声明变量再初始化.而上面是先声明,再执行赋值语句. 如果在add.go这里定义一个函数,在函数里面进行赋值.虽然解决了不报错,但是输出的结果是0. 要在main.go中输出这个变量前,执行一下这个定义的函数就可以了. varaint=10  //是一句话,声明并赋值  &nbsp...

4.异常1: (1).test/calc/add.go: packagecalc varAgeint int=10//会报错 (2).test/main/main.go: packagemain import( "fmt" "test/calc" ) funcmain(){ fmt.Println(calc.Age) }

  dy78R63Mycs7   2023年11月02日   57   0   0

所有go源码以.go结尾. golang可执行程序,packagemain有且只有一个main入口函数. 两种注释:单行注释//和多行注释// 1.变量命名: 标识符以字母或下划线开头,大小写敏感以数字开头、含有特殊符号不行. _是特殊标识符,用来忽略结果 保留关键字 2.import方式: ①.import("fmt") ②.import{ "fmt" } 4.常量: 常量使用const修饰,代表永远是只读的,不能修改.即在编译的时候就已经确定了. const只能修饰boolean、number(int相关类型、浮点类型、complex)和string. 语法:consti...

  dy78R63Mycs7   2023年11月02日   45   0   0 内存地址值类型引用类型

5.2变量的作用域: 局部变量:  a.在函数内部声明的变量.  b.生命周期仅限于函数内部,出了这个函数,变量就销毁了. 全局变量:  a.在函数外部声明的变量.  b.生命周期作用于整个包,如果是大写的,则作用于整个程序.  c.在语义块{}中,也有作用域.如for循环中声明的变量,不能在for外面使用. 流程控制: If/else分支判断 switchcase语句 for语句 forrange语句用来遍历数组、slice、map、chan fori,v:=rangestr{ fmt.Printf(“index[%d]...

  dy78R63Mycs7   2023年11月02日   42   0   0 生命周期作用域局部变量

1.数据类型: (1).bool类型(只能存true和false) (2).数字类型:主要有int(4个字节)、int8(1个字节,8是8个bit位)、int16(2个字节)、int32(3个字节)、int64(4个字节)、uint8(无符号)、uint16、uint32、uint64、float32(4个字节)、float64 (3).字符类型: 语法:varabytevarabyte='c' 单引号 8个bit位,1个字符 (4).字符串类型: 语法:varstrstring 字符串表示两种方式:a.双引号b.``(反引号,不会转义) 多个字符组成 (5).指针类型: 普通类型,...

  dy78R63Mycs7   2023年11月02日   74   0   0 值类型双引号字符串

包的概念: 和python一样,把相同功能的代码放到一个目录,称之为包.可以提高代码的可复用性、模块化结构. 包可以被其他包引用. main包是用来生成可执行文件(应用程序),每个程序只有一个main包. 所有的代码不能单独存在,都会属于一个包. 相当于php的命名空间. 调用规则: 同一个包中函数,直接调用. 不同包中函数,通过包名+点+函数名进行调用. 包访问控制规则: 大写:这个函数/变量是可导出的 小写:这个函数/变量是私有的,包外部不能访问.

  dy78R63Mycs7   2023年11月02日   42   0   0 命名空间可执行文件模块化

4.同级目录引入其它包: (1).test/calc/add.go: packagecalc//包名也可以是其它名字,推荐为当前的目录名称 varAgeint=10 funcAdd(inta,intb)int{//要想外部调用,首字母大写 returna+b } (2).test/calc/sub.go: packagecalc funcSub(inta,intb)int{ returnab } (3).test/main/main.go: packagemain import{ "test/calc"//从GOPATH的src目录下面开始写 } funcmain(){ sum:=c...

  dy78R63Mycs7   2023年11月02日   16   0   0 外部调用包名首字母
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~