Go语言初识

一、Go语言介绍

1. 介绍、优势
  1. 部署简单
  2. 静态语言,但有动态语言的感觉
  3. 开发效率高 GC(内存垃圾回收机制)
  4. 支持并发
  5. 含很多第三方库
2. 用来做什么
  1. 服务器编程
  2. 分布式系统
  3. 网络编程
  4. 内存数据库
  5. 云平台

二、基础类型

1. 命名
  1. 字母或下划线开头
  2. 关键字不能用于自定义名字
2. 变量:
1). 变量声明
  • 变量声明了必须要使用
  • 只是声明没有初始化的变量,默认为0 同一个{}里
  • 声明的变量名唯一
  • 可以同时声明多个变量
2). 变量初始化:
  • 声明变量时,同时赋值
3). 自动推导类型
  • 必须初始化,通过初始化的值来确定类型

c := 30

  • 已经有变量c后,不能再新建一个变量c
    • 例:再次初始化声明c := 20
4). 多重初始化

a, b, c := 10, 20, 30

5). 变量赋值
  • 可以多重赋值
6). 匿名变量
  • _ 是特殊的变量名,任何赋予它的值都会被丢弃
3. 常量
  • 程序运行期间,不可以改变的量
  • 常量不允许修改
  • 常量自动推导类型只要=,不需要:=
1). 多个变量或常量定义
  • 变量定义
    var (
    	a int
    	b float 64
    )
    
    a, b = 10, 2.11
    fmt.Println("a = ", a)
    fmt.Println("b = ", b)
    
  • 常量定义
    const (
    	i int = 10   
    	j float64 = 2.22   
    	 
    	// 可以自动推导类型
    	// i = 10
    	// j = 2.22
    )
    
    fmt.Println("i = ", i)
    fmt.Println("j = ", j)
    
2). iota枚举
  • iota常量自动生成器, 每隔一行,自动累加1
  • iota给常量赋值使用
  • iota遇到const,重置为0
  • 可以只写一个iota
  • 如果是同一行,值都一样
4. 基础数据类型
1). 布尔类型
  • 没有初始化时的初始值为false
// 声明变量
var a bool
a = false

// 自动推导的两种方法:
var a = false
b := false
2). 整型
3). 浮点型
  • 默认值为float64
  • float64存储小数比float32更准确
4). 字符类型
  • 支持两种字符类型
    • (1). byte
      • 是uint8的别名
      • 代表utf-8字符串的单个字节的值
    • (2). rune
      • 代表单个unicode字符
  • ascii码
    • 65 ‘A’
    • 97 ‘a’
    • 10 ‘\n’ 换行
5). 字符串
  • 内建函数:len()
  • 字符和字符串区别
    • 字符:单引号
      • 往往只有一个字符,转义字符除外
    • 字符:串双引号
      • 一个或多个字符组成
      • 字符串都是隐藏了一个结束符,’\0’
        var ch byte
        var str string
        
        ch = 'a'
        str = "a" // 由'a'和‘0’组成了一个字符串
        
        str = 'hi yyy'
        fmt.Printf("str[0] = %c, str[1] = %c', str[0], str[1])
        
6). 复数类型
  • 复数实际上由两个实数构成,一个表示实部, 一个表示虚部
    • real()

    • imag()

      var t complex128    // 声明
      t = 2.1 + 3.14i    // 赋值
      fmt.println("t = ", t)
      
      // 自动推导类型
      t2 := 3.2 + 2.3i
      
      // 通过内建函数取实部、虚部
      fmt.Println(real(t2),  imag(t2))
      
5. 输入的使用
var v int
fmt.printf("请输入一个整型: ")
// 两种方法:
fmt.Scanf("%d", &v)
fmt.Scan(&v)
6. 类型转换
  • 允许隐式转换,所有类型转换必须显式声明
  • 转换只能发生在两种相互兼容的类型之间
7. 类型别名
type bigint int64 //int64类型改名为bigint
var x bigint = 100

type (
    myint int    //int改名为myint
    mystr string //string改名为mystr
)

三、运算符

  • Go语言的bool类型和int不兼容

四、 流程控制

1. 选择结构
1). if … .else
  • 支持初始化表达式, 初始化和条件表达式用分号分隔
  • 左大括号必须和条件语句或else在同一行
  • if … else if … else
2). switch语句
  • go里的switch相当于每个case后带有break,匹配成功后跳出整个switch
  • 可以用fallthrough强制执行后边的case代码
2. 循环语句
1). for
sum := 0
// 初始条件; 判断条件是否为真; 如果为真,执行循环体,为假跳出循环体
for i := 1; i <= 100; i++ {
	sum = sum + i
}
2). range
  • 迭代
  • 返回两个值,第一个返回值是元素的数组下标,第二个返回值是元素的值
    str = 'hello'
    for i , data := range str {
    	fmt.Printf("str[%d]=%c\n, i, data)
    }
    
    for i := range str {  //第二个返回值默认丢弃
        fmt.Printf("%c\n", str[i])
    }
    
3. 跳转语句
1). break和continue
  • break
    • 跳出当前循环
  • continue
    • 跳过本次循环
2). goto
  • 用goto跳转必须在当前函数内定义的标签

五、其他:

1. 导入包必须要使用
2. 赋值前必须先声明变量
3. 字符是单引号
4. Println和Printf区别
  • Println:一段一段处理,自动加换
  • Printf:格式化输出

fmt.Println(“a = %d\n”, a)
fmt.Printf(“a = %d, b=%d”, a, b)

  • %c: 以字符方式打印
  • %d: 以整型方式打印
  • %s: 以字符串打印
  • %f: 以标准计数法表示的浮点数或复数值
  • %T: 使用Go语法输出的值的类型
  • %v: 使用默认格式输出的内置或自定义类型的值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值