1.可以给类型取别名,但是该类型和别名是两个不同的类型:

  type myInt int

2.go支持可变参数:args...

  0个或多个参数:func sum(args... int) sum int {}

  1个或多个参数:func sum(n int, args... int) sum int {}

3.init()函数是初始化函数,如果有全局变量,执行顺序为:全局变量——> init()——>main()

4.匿名函数:

    res := func(n1 int, n2 int) int {
return n1 + n2
}(10, 20)
fmt.Println(res)
    a := func(n1 int, n2 int) int {
return n1 - n2
}
fmt.Println(a(10, 5))

5.全局匿名函数:

var(
Fun1 = func(n1 int, n2 int) int {
return n1 * n2
}
) func main() {
b := Fun1(10, 5)
fmt.Println(b)
}

6.闭包:返回的是一个匿名函数,但是这个匿名函数引用到函数外的n,因此这个匿名函数就和n形成一个整体,构成闭包。

func makeSuffix(suffix string) func (string) string {
return func (name string) string {
if !strings.HasSuffix(name, suffix) {
return name + suffix
}
return name
}
}

7.defer:当执行到defer时,暂时不执行,会将defer后面的语句压入到独立的栈(defer栈),当函数执行完毕后,再从defer栈,按照先入后出的方式出栈:

func sum1(n1 int, n2 int) int {
defer fmt.Println("ok1 n1-", n1)
defer fmt.Println("ok2 n2-", n2) res := n1 + n2
fmt.Println("ok3 res-", res)
return res
}

8.字符串遍历,同时处理有中文的问题 r := []rune(str)

str := "hello北京"
r := []rune(str)
for i := 1; i < len(r); i++ {
fmt.Printf("字符=%c\n", r[i])
}

9.使用defer+recover来处理错误

func test(){
defer func() {
err := recover()
if err != nil {
fmt.Println("err=", err)
}
}()
num1 := 10
num2 := 0
res := num1 / num2
fmt.Println("res=", res)
} func main() {
test()
}

10.自定义错误:errors.New和panic内置函数

  1)errors.New("错误说明"), 会返回一个error类型的值,表示一个错误

  2)panic内置函数,接收一个interface{}类型的值(也就是 任何值了)作为参数,可以接收error类型的变量,输出错误信息,并退出程序

func readConf(name string) (err error) {
if name == "config.ini" {
return nil
} else {
return errors.New("读取文件错误...")
}
} func test() {
err := readConf("config.ini")
if err != nil {
panic(err)
}
fmt.Println("test()继续执行...")
} func main() {
test()
}

golang使用注意事项的更多相关文章

  1. golang介绍

    一.golang介绍  golang是Google开发的一种 静态强类型.编译型,并发型,并具有垃圾回收功能的编程语言. 二.语言特性 1..自动垃圾回收 2.支持函数多返回值 3.并发强 三.gol ...

  2. TODO:Golang指针使用注意事项

    TODO:Golang指针使用注意事项 先来看简单的例子1: 输出: 1 1 例子2: 输出: 1 3 例子1是使用值传递,Add方法不会做任何改变:例子2是使用指针传递,会改变地址,从而改变地址. ...

  3. 搭建golang的beego注意事项

    大家都知道,在学golang的时候,大家都会去关注谢大的beego快速开发架构. 首先,小弟是win7 32bit系统,在这里,我要把我学习golang的过程和小心得记录起来. 相信想学的人一定会早早 ...

  4. Golang Vendor 包机制 及 注意事项

    现在的 Go 版本是 1.8,早在 1.5 时期,就有了 Vendor 包机制,详情可查看博文:“理解 Go 1.5 vendor”. 遇到的问题 个人在使用 Glide 管理 Vendor 包时(附 ...

  5. golang 赋值与声明语法糖使用注意事项

    赋值与声明语法糖 基本用法略, 搜索即可 注意事项 类型推断 := 会自动进行类型推断, 当想要的类型不是自己想要的类型时需要进行类型转换 // i1 默认是 int 类型 i1 := 1 // 当需 ...

  6. golang之结构体使用注意事项和细节

    1. 结构体的所有字段在内在中是连续的 2. 结构体是用户单独定义的类型,和其它类型进行转换时需要有完全相同的字段(名字.个数和类型) 3. 结构体进行type重新定义(相当于取别名),Golang认 ...

  7. golang 中 channel 的详细使用、使用注意事项及死锁分析

    目录 1.什么是 channel,介绍管道 2.channel 的基本使用 3.channel 的使用场景 4.使用 channel的注意事项及死锁分析 什么是 channel 管道 它是一个数据管道 ...

  8. Golang中进行reslice时的注意事项

    先看下面代码: package main import "fmt" func main() { slice := []int{0, 1, 2, 3, 4, 5, 6, 7, 8} ...

  9. Golang入门教程(十二)安装注意事项

    1.$GOPATH (1)go 命令依赖一个重要的环境变量:$GOPATH .注:这个不是Go安装目录 (2) (3) (4)git 安装 (5)包管理对应关系 (6)安装完之后bee 工具后,bee ...

随机推荐

  1. cmake入门之内部构建

    https://www.cnblogs.com/coderfenghc/tag/cmake/ https://cmake.org/cmake/help/v3.16/guide/tutorial/ind ...

  2. BZOJ1856[Scoi2010]字符串——组合数学+容斥

    题目描述 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数不能少于0的个数.现在lxhgww想要知道满足 ...

  3. arcgis python 获得arcgis安装版本和安装位置

    import arcpy print(arcpy.GetInstallInfo()['Version']) 和获得ArcGIS版本和安装位置 import arcpy # Use the dictio ...

  4. oracle的表分区

    (1.) 表空间及分区表的概念 表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间.   分区表: 当表中的数据量不断增大,查询数据的速度就 ...

  5. sql中union,union all没有兼顾到的内容

    今日遇到一个问题,两张表联合取交集去重,但是需要把某一字段相同的也给去掉 union all : 联合,没有取交集 union :联合取交集(仅针对所有字段相同的去重) 解决方案:将联合的数据作为一个 ...

  6. ISO/IEC 9899:2011 条款6.4.6——标点符号

    6.4.6 标点符号 语法 1.以下之一     [  ]    (  )     {  }    .    ->    ++    --    &    *    +    -     ...

  7. Ubuntu16.04 + cuda9.0 +cudnn7.1(转载)

    转载一个详细可用的ubuntu16.04+cuda9.0+cudnn7.1教程. 0 - 参考材料 https://blog.csdn.net/Umi_you/article/details/8026 ...

  8. 使用C语言 判断当前网络是否联通

    方式一: int GetNetStat( ) { char buffer[BUFSIZ]; FILE *read_fp; int chars_read; int ret; try { memset( ...

  9. linux chown 命令用法

    [-cfhvR] [--help] [--version] user[:group] file  比如  chown chown root /home 把/home的属主改成root用户使用权限 : ...

  10. osg osgUtil::LineSegmentIntersector

    #ifdef _WIN32 #include <Windows.h> #endif // _WIN32 #include <osgViewer/Viewer> #include ...