Go语言学习笔记一--基础语法

学习Golang原因,也是因为自己比较懒,早在6月份时候就想要去学习Golang,一直拖到现在才开始.首先因为区块链技术领域中有很多框架/系统的编写使用golang来写,追述其根源也引起自己学习的第二个原因,这是一个能够支持极高并发的语言,其诞生所解决的痛点便是高性能服务器,且语言简洁优美.其对于并发在底层与其他语言(java等)是不同的操作,现在还只有一些模糊的概念在心里,并不能讲的非常清楚,愿自己通过这次学习,最后能一一解答心中疑惑.

好了出发,hello golang!

变量定义

变量的定义,首先需要 var开头,表示这是一个变量,紧跟着是一个变量名列tem,再紧跟着是变量的类型string.语言结束不需要分号.
var tem string,在go中所有变量的定义如果没有赋值,默认会为其赋值,string为"",int为0.且关键是,会发现在我们定义完变量之后,其变量名下会有报错红线,这是因为go语言中非常严谨的原因,不允许定义没有使用的变量,既变量定义完后必须使用.

func variableZeroValue() {
    var a int
    var s string
    fmt.Printf("%d %q\n",a,s)  //如果不打印的话,就会a与b变量名上会报错
}
func variableInitiaValue() {
    var a,b int = 1,2 //可以看到,赋值时是可以一次赋多值
    var s string = "hello golang"   // 在编译器中发现类型上画有黄线,提示go其实可以自动识别类型,它会根据我们的值去判断类型
    fmt.Println(a,b,s)  
}
func variableTypeDeduction() {
    var a,b = 1,2
    var s = "hello golang"
    fmt.Println(a,b,s)      //自动判断类型,省略变量类型
}
/**
    变量定义简单写法
 */
func variableShorter()  {

    a,b,c := 1,"hello",false    //可以使用 := 的形式来定义变量(推荐使用)
    //a:=2  //报错 一个变量 只能有一次 := 的定义,所有语言都一样,变量定义在一个作用域中只能定义一次

    fmt.Println(a,b,c)
}
/**
方法外部定义,也是可以的,但是注意,其作用域是包下,而不是类似Java中的整个类的全局变量,比全部变量范围要大
*/
package main

import "fmt"

var temp = 1        //方法外定义变量 只能使用 var关键字定义,这是因为golang规定,一个类中开头必须为 var 或 func
var temp2 = "hello"

var (               //变量定义比较多的情况下可以使用 var() 在括号内部定义变量,少写var
    t = 1       
    o = "hello"
)

变量定义总结

  • 使用var关键字
    • 使用默认值var a,b,c string
    • 赋值var a int = 1
    • 在函数外定义变量,其作用域是整个包下
    • 使用var()集定义变量
  • 编译器自动决定类型
    • var a,b,c = 1,“hello”,true
  • 使用:=定义变量
    • a,b,c := 1,“hello”,false
    • 只能在函数内使用

常量与枚举定义

常量的定义需要用到const关键字,使用方法和var类似,只是const是用来定义常量的


/**
    产量的定义
 */
func constTest() {

    const a = 1
}

/**
函数外常量定义
 */
const name = 1

/**
枚举定义
 */
func enums() {

    /**
        通过 const括号集定义一个枚举
     */
    const (
        up = 1
        down = 2
    )
    
    
    /**
    其值可以使用 iota这个关键字来进行 下面的自增,
    如果想要跳过,可以使用_占位
     */
    const (
        cpp    = iota
        _
        java
        python
        golang
    )

    fmt.Println(cpp, java, python, golang)

    /**
    当然iota可以参与运算规则,下面所有都遵守这个规则
     */
    // b,kb,mb,gb,tb,pb
    const (
        b  = 1 << (10 * iota)
        kb
        mb
        gb
        tb
        pb
    )

    fmt.Println(b,kb,mb,gb,tb,pb)

}

常量与枚举定义总结

  • 使用const关键字,const关键字用法与var类似
  • 枚举定义,直接使用const()集
    • 枚举中可以使用iota关键字,来进行自增操作
    • iota可以参与运算

作者所有的学习源码在 go学习源码github地址,如果觉得有用的话帮小智贡献一个star?

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值