• go语言学习教程


    先来一个最简单的例子

    package main     包声明,知名这个文件属于哪个包
    
    import "fmt"    fmt包实现了格式化IO(输入/输出)的函数
    
    func main() {   (main函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数))
       /* 这是我的第一个简单的程序 */
       fmt.Println("Hello, World!")
    }

    1.变量声明  

    第一种,指定变量类型,声明后若不赋值,使用默认值。
         var a int =10
    第二种,根据值自行判定变量类型。    
         var b = 10
    第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。
            c := 10
    (注意,第三种声明一定要写在输出函数里)

    2.输出

    卸载输出函数中的必须输入(局部函数声明必须使用),不然报错,在输出函数外写的全局变量,可以声明并不使用

    var a int = 10
    var b = 12.5
    var e,f = 123, "hello"
    func main(){
      c := "shangtian"
      println(a,b,e)//报错,c声明但没使用
    }

     3.iota,特殊常量,可以认为是一个可以被编译器修改的常量。

    在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。

    iota 可以被用作枚举值: 

    const (
        a = iota //0
        b = iota //1
        c = iota //2
    )

    可以简写为如下形式:

    const (
        a = iota
        b
        c
    )
    func main() {
        const (
                a = iota   //0
                b          //1
                c          //2
                d = "ha"   //独立值,iota += 1
                e          //"ha"   iota += 1
                f = 100    //iota +=1
                g          //100  iota +=1
                h = iota   //7,恢复计数
                i          //8
        )
        fmt.Println(a,b,c,d,e,f,g,h,i) // 0,1,2,ha,ha,100,100,7,8
    }
    func main(){
      const(
        i = 1 << iota // iota 是 0,左移0位,1乘2的0次方
        j = 3 << iota // Iota是 1,左移1位,3×2的1次方
        k
        l
      )
      println(i,j,k,l)//1,6,12,24
    }

    4.运算符

    (1)<<

      左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0

    (2)>>

      右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。

     5.Go语言函数

      函数是基本的代码块,用于执行一个任务。Go 语言最少有个 main() 函数。  

    package main
    
    import "fmt"
    
    func main() {
       /* 定义局部变量 */
       var a int = 100
       var b int = 200
       var ret int
       /* 调用函数并返回最大值 */
       ret = max(a, b)
    
       fmt.Printf( "最大值是 : %d
    ", ret )
    }
    
    /* 函数返回两个数的最大值 */
    func max(num1, num2 int) int { //函数的定义格式 括号外面的int是返回类型
       /* 定义局部变量 */
       var result int
       if (num1 > num2) {
          result = num1
       } else {
          result = num2
       }
       return result 
    }

      函数返回多个值

    package main
    
    import "fmt"
    
    func swap(x, y string) (string, string) {
       return y, x
    }
    
    func main() {
       a, b := swap("Mahesh", "Kumar")
       fmt.Println(a, b)
    }

    6.Go 语言变量

     Go 语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑

    package main
    
    import "fmt"
    
    /* 声明全局变量 */
    var g int = 20
    
    func main() {
       /* 声明局部变量 */
       var g int = 10
    
       fmt.Printf ("结果: g = %d
    ",  g) // 10
    }

     7.声明数组

      初始化数组

    var balance = [5]float32{1000.0, 2.0, 3.4, 7.0, 50.0} 

      初始化数组中 {} 中的元素个数不能大于 [] 中的数字。

     如果忽略 [] 中的数字不设置数组大小,Go 语言会根据元素的个数来设置数组的大小:

    var balance = [...]float32{1000.0, 2.0, 3.4, 7.0, 50.0}
    8.Go 指针
    func main() {
       var a int= 20   /* 声明实际变量 */
       var ip *int        /* 声明指针变量 */
    
       ip = &a  /* 指针变量的存储地址 */
    
       fmt.Printf("a 变量的地址是: %x
    ", &a  )
    
       /* 指针变量的存储地址 */
       fmt.Printf("ip 变量储存的指针地址: %x
    ", ip )
    
       /* 使用指针访问值 */
       fmt.Printf("*ip 变量的值: %d
    ", *ip )
    }
    Go 空指针
      当一个指针被定义后没有分配到任何变量时,它的值为 nil。
    package main
    
    import "fmt"
    
    func main() {
       var  ptr *int
    
       fmt.Printf("ptr 的值为 : %x
    ", ptr  )
    }


  • 相关阅读:
    Exp7 网络欺诈防范
    Exp6 信息搜集与漏洞扫描
    Exp4 恶意代码分析
    Exp2 后门原理与实践
    PC平台逆向破解实验报告
    See You Again——我最后的汇编程序
    表格标签
    ansible环境搭建
    OSPF_1
    Linux的文件管理(8-27)
  • 原文地址:https://www.cnblogs.com/SunShineM/p/7093322.html
Copyright © 2020-2023  润新知