ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Golang基础

2022-05-04 20:05:02  阅读:158  来源: 互联网

标签:函数 32 基础 Golang init error main type


Golang基础

1. 主要特征

1.1 特征

  1. 垃圾回收
  2. 丰富的内置类型
  3. 多返回值
  4. 匿名函数
  5. 闭包
  6. OOP
  7. 并发编程
  8. 反射
  9. 错误处理

1.2 命名规则

  • 首字母可以是不能是数组
  • 可以由Unicode字符、下划线、数字构成
  • 长度不限
  • 严格固定首字母大小写,有不同含义

1.3 Go项目

一个Golang工程中主要包含三个目录:

在GOPATH目录下

  • bin:编译后的二进制文件
  • src:源代码文件
  • pkg:包文件

2. 丰富的内置类型

  • 2.1 普通类型:

    • bool
    • int(32 or 64), int8, int16, int32, int64
    • uint(32 or 64), uint8(byte), uint16, uint32, uint64
    • float32, float64
    • string
    • complex64, complex128
    • array

    官方文档:int is a signed integer type that is at least 32 bits in size. It is a distinct type, however, and not an alias for, say, int32.

    int整形最少占32位,int和int32是两码事


    complex:复数类型

    可以存储两个数值:real、image

    实数部分和虚数部分都是[float32]类型

    可以通过real(complex)拿到real值,同理可以通过imag(complex)拿到image值

    例如:

    func main() {
       c := complex(11.11, 22.22)
       fmt.Printf("%f\n%f", real(c), imag(c))
    }
    

    输出为:

    11.110000
    22.220000


    array为固定长度


2.2 引用类型

  • slice
  • map
  • chan

2.3 内置接口error

// The error built-in interface type is the conventional interface for
// representing an error condition, with the nil value representing no error.
// 表示错误条件,nil值表示没有错误。
type error interface {
    Error() string
}

只要实现了这个方法,就是实现了error

可以自定义error

例如:

// 定义一个类
type Demo struct {
}

// 这个类实现Error方法,也就是实现error接口
func (d *Demo) Error() string {
   return "自定义错误"
}

func main() {

   err := testErr()
   fmt.Println(err)
}

// 模拟一个错误
func testErr() error {
   return &Demo{}
}

此时打印:自定义错误


3. 函数

3.1 init函数

  • init函数用于包(package)的初始化,该函数是go语言的一个重要特性
  • 每个包都可以有多个init()
  • 包里每个源文件也可以有多个init()
  • 多个init()执行顺序没有明确的规定
  • 不同包的init()按照包导入的依赖关系决定执行顺序
  • init()不能被其他函数调用
  • 在main()执行前自动被调用

3.2 main函数

Go语言程序的默认入口函数(主函数)


  • 两个函数在定义时不能有任何的参数和返回值

  • Go程序自动调用

  • init函数可以应用于任意包中,且可以重复定义多个

  • main函数只能用于main包中,且只能定义一个


未完

标签:函数,32,基础,Golang,init,error,main,type
来源: https://www.cnblogs.com/coderDreams/p/16222161.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有