zoukankan      html  css  js  c++  java
  • 初识golang

    golang的变量和常量

    //函数外声明并初始化变量
    var test //错误
    var test = "test" //ok,不需要写分号,不需要写类型
    var test string = "test" //ok,写不写类型都OK
    test := "test" //错误,在函数外部不可以用:=
    //解释:":="这个符号是自动匹配类型,比如 a := 100,会把右边的类型和值传递到变量a,也就是说a的类型是int,值是100
    //函数内声明并初始化变量
    var testFunc = func() {
        var test2 //错误
        var test = "test" //ok
        var test1 string = "test1" //ok
        test3 := "test3" //ok
        fmt.Println(test, test1, test2, test3)                                                                                                          
    }
    //变量块
    var (
    ErrParamError = "param error"
    ErrParamEmpty = "param empty"
    )

    常量

    const test//错误,没有初始化
    const test = "test" //ok
    const test string = "test" //ok
    const test := "test" //错误
    //常量块
    
    const (
        test = "test"
        Pi = 3.13
    )
    

    iota用法:iota默认为整型的空值0,之后的元素的值是它前一个元素的值+1

    const (
        Monday = iota
        Tuesday
        Wednesday
        Thursday
        Friday
        Saturday
        Sunday
    )
    
    func main() {
        fmt.Println(Monday, Tuesday, Sunday)
    }
    
    输出:
    0 1 6

     另外注意到:包的全局变量是可以只定义但是不使用的,而函数内的临时变量是定义后必须要使用的(作为参数,右值,或者右值的一部分)

    //这段代码是OK的
    var test = "test"
    
    func main() {                                                                                                          
    }
    
    //这段代码是错误的
    func main() {
        var test1 = "test1"
        //fmt.Println(test1)                                                                                                                 
    }
    
    //加上fmt是ok的
    func main() {
        var test1 = "test1"
        fmt.Println(test1)                                                                                                                 
    }

     数组:

    代码
    package main
    import "fmt"
    
    func main() {
        arr := make([]string, 5, 10)                                                                                                      
        fmt.Println(len(arr), cap(arr))
        return
    }
    输出:
    5 10
    能看出来数组arr的长度是5,容量是10.这两个数字意味着什么呢?
    
    代码
    package main
    
    import "fmt"
    
    func main() {
        var temp string
        arr := make([]string, 5, 10)
        fmt.Println(len(arr), cap(arr))
    
        arr[0] = "string0"
        arr[1] = "string1"
        arr[5] = "string5"                                                                                                                
        return
    }
    输出:
    5 10
    panic: runtime error: index out of range
    len(arr)=5意味着数组的最大长度是5,arr[5]这样的变量是不被允许的
    
    cap(arr)=5不知道是啥意思

     值类型,指针类型

    package main
    import (
        "fmt"
    )
    
    var _ = fmt.Sprintf("")
    
    func main() {
        var a int = 10
        fmt.Println(a)
        changeValue1(a)
        fmt.Println(a)
    
        fmt.Println(a)
        changeValue2(&a)
        fmt.Println(a)
    }
    
    func changeValue1(a int) {
        a++ 
    }
                                                                                                                                          
    func changeValue2(a *int) {
        *a += 1
    }
    
    输出:
    10
    10
    10
    11

     判断结构体是否被设置?

    思路1:判断其中的元素是否为空元素;思路2:是否可以字节判断变量为空,目前是用第一种方法

    package main
    import "fmt"
    
    type testStruct struct {
        Name string
        Age int
    }
    
    func main() {
        var t testStruct
        //t.Age = 100
        if t.Name == "" {
            fmt.Println("name is empty")
        } else {
            fmt.Println("a" + t.Name + "a")
        }
    }

      .....

  • 相关阅读:
    Windows Server2016环境中安装Oracle12c数据库
    centos7 安装Oracle19C 数据库
    centos7 磁盘分区以及磁盘挂载
    PHP日常开发技巧散记
    代码压缩工具 webpack安装与入门使用【初级】
    程序员修炼之道系列 | 使用曳光弹找到目标
    程序员修炼之道系列 | 不要冲出前灯范围
    程序员修炼之道系列 | 敏捷估算
    程序员修炼之道系列 | “豆腐渣“工程竟然也能做原型
    官宣!禅道与极狐(GitLab)达成深度合作,携手推进开源开放DevOps生态
  • 原文地址:https://www.cnblogs.com/helww/p/4103882.html
Copyright © 2011-2022 走看看