• Go语言从入门到放弃(一) 变量/常量/函数


    HelloWorld

    我们先看看一个最简单的HelloWorld代码

    1 package main
    2 
    3 import "fmt"
    4 
    5 func main() {
    6    fmt.Println("Hello, World!")
    7 }

    这段代码可以在控制台输出 "Hello, World!"

    下面让我们来刨析一下此段代码

    第一行的 package main  定义了该程序的包名为 main ,main的功能同其它语言一样,都代表着程序的主要部分/入口,每一个应用都应该有一个main

    第三行的  import "fmt"  代指引入fmt模块,fmt模块作用是输入输出,同学们可以暂且把他们看作Python的Print,要注意的是Go语言中禁止引入模块而不使用,这是为了保证代码的可读性和简洁性.

    第五行开始 为构建一个名为main的函数,同Python类的main类似,当定义main后执行该模块会先执行main函数,当定义了init函数时会优先执行init初始化函数,Println函数也可以打印变量的值,此时不带引号.

    # 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。  ---- 菜鸟教程

    #  Go语言中的多行注释是 /* */  单行注释是 // 

    Go语言中变量的定义使用

    Go语言的建立变量如下

    var sum int

    分三个部分来读

    新建变量  变量名  类型

    注意变量名要规避Go语言的关键字(关键字以后会整理)

    我们无法在函数外使用变量,会报错

    syntax error: non-declaration statement outside function body
    语法错误:函数主体之外的非声明语句

    当我们在函数内使用变量则正确

     1 package main
     2 
     3 import "fmt"
     4 
     5 var sum int
     6 
     7 func main()  {
     8     sum = 1997
     9     fmt.Println(sum)
    10 }

    导入包内的变量

     每个Go项目都由多个包组成,当我们想要在A包中调用B包内的变量,首先要保证已经导入A,其次要保证要导入的变量第一个字母大写

    我们引入math包,math.Pi是圆周率

    package main
    
    import (
        "fmt"
        "math"
    )
    
    //var sum int
    
    func main()  {
        //sum = 1997
        //fmt.Println(sum, rand.Intn(10))
        fmt.Println(math.Pi)
    }

    可以正常打印,但是当我们改成小p,则会输出错误

    cannot refer to unexported name math.pi
    无法引用未导出的名称math.pi

    函数的传参与返回

    package main
    
    import (
        "fmt"
    )
    
    func add(x int, y string) (int, string) {
        return x, y
    }
    func main()  {
        fmt.Println(add(1, "ad"))
    }

    我们来看这段代码,我们新建了一个函数为add,当我们需要传参时要指定参数的类型

    (x int, y string) 代表可接受两个参数,x是int类型,y是str类型,如果我们接受的x,y都是一个类型可以简写为 (x, y int)
    (int, string) 代表返回两个参数,第一个参数为int类型,第二个参数为str类型,返回时不可简写
    我们也可以直接写return,这样会将所有函数内变量传出

    package main
    
    import "fmt"
    
    func add(x, y int) (sum int) {
        sum = x + y
        return 
    }
    
    func main()  {
        fmt.Println(add(1, 2))
    }

    但是这样还是需要传出变量的名字,而且这样代码的可读性不是太好,所以我们不推荐这样使用

    变量的定义

    var语句可以同时将多个变量定义为一个类型

    package main
    
    import "fmt"
    
    func add(x, y int) (sum int) {
        sum = x + y
        return
    }
    
    var a, b, c bool
    
    func main()  {
        a = true
        fmt.Println(a, b, c)
    }

    此时一个var语句定义了 a,b,c 三个变量,同时定义为bool值

    又因为变量为空所以都是False

    我们在main中又将a赋值为True

    此时打印结果为

    true false false

    我们还可以在定义变量时赋予变量值

    package main
    
    import "fmt"
    
    func add(x, y int) (sum int) {
        sum = x + y
        return
    }
    
    var a, b, c bool = true, true, false
    
    func main()  {
        fmt.Println(a, b, c)
    }

    此时结果为

    true true false

    这种方式作用等同于

    package main
    
    import "fmt"
    
    func add(x, y int) (sum int) {
        sum = x + y
        return
    }
    
    var a=true
    var b=false
    var c=true
    
    func main()  {
        fmt.Println(a, b, c)
    }

    结果为

    true false true

    在函数内部我们可以不使用var定义变量,方法为

    package main
    
    import "fmt"
    
    func main()  {
        a := 1
        b := "ad"
        fmt.Println(a, b)
    }

    结果为

    1 ad

     

  • 相关阅读:
    DebugView使用技巧
    网络抓包--Wireshark
    常用curl命令
    chrome.debugger
    修改php.ini 的timezone
    初识Elasticsearch,bulk 操作的遇到的那些事
    chrome 扩展 调试
    sqlite 时间戳转时间
    centos 升级sqlite3
    php 安装redis
  • 原文地址:https://www.cnblogs.com/chnmig/p/9978722.html
Copyright © 2020-2023  润新知