• [易学易懂系列|golang语言|零基础|快速入门|(四)]


    今天开始,我们来写代码。

    学习一门语言,最快的方式就是写代码,做项目。

    别的学习教程,都是hello world.

     我们就来点不一样的吧。我们不一样!不一样!不一样!

    首先,打开VSCODE.( 关于VSCODE配置,见:https://www.jianshu.com/p/83beca927c9e,https://zhuanlan.zhihu.com/p/59879132)

    写代码:

    package main

    var x, int
    var (  // 这种因式分解关键字的写法一般用于声明全局变量
        int
        bool
    )

    var c, int = 1, 2
    var e, = 123, "hello"

    //这种不带声明格式的只能在函数体中出现
    //g, h := 123, "hello"

    func main(){
        g, := 123, "hello"
        println(x, y, a, b, c, d, e, f, g, h)
    }
     
    输出结果为:
    0 0 0 false 1 2 123 hello 123 hello

    我们来一一说明:

    1)var x, int

    这里通过var关键词,来定义变量 x,y,并且golang自动赋值为0.所以结果打印都为:0

     

    2)var (  

     

        int

     

        bool

     

    )
    这种声明方式,一般用在全局变量。其中bool为布尔值,默认值为:false.
     
     3)var c, int = 1, 2
    golang可以定义多个变量的类型,并为变量赋值。
     
    4)var e, = 123, "hello"
    golang也可以对不同类型的变量,同时赋值,并自动推导类型,这个就是:编译器推导类型的格式。
     
    var 的变量声明还有一种更为精简的写法,例如:
    1. hp := 100
    这是Go语言的推导声明写法,编译器会自动根据右值类型推断出左值的对应类型。

    注意:由于使用了:=,而不是赋值的=,因此推导声明写法的左值变量必须是没有定义过的变量。若定义过,将会发生编译错误。

    5)g, := 123, "hello"
     
    这种不带声明格式的只能在函数体中出现
     
    短变量声明的形式在开发中的例子较多,比如:
    1. conn, err := net.Dial("tcp","127.0.0.1:8080")
    net.Dial 提供按指定协议和地址发起网络连接,这个函数有两个返回值,一个是连接对象(conn),一个是错误对象(err)。如果是标准格式将会变成:
    1. var conn net.Conn
    2. var err error
    3. conn, err = net.Dial("tcp", "127.0.0.1:8080")
    因此,短变量声明并初始化的格式在开发中使用比较普遍。

    注意:在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名可能是重复声明的,编译器也不会报错,代码如下:
    1. conn, err := net.Dial("tcp", "127.0.0.1:8080")
    2. conn2, err := net.Dial("tcp", "127.0.0.1:8080")
    上面的代码片段,编译器不会报 err 重复定义。
     
    以上代码,全部可运行。建议用IDE写代码并运行。
    本人精通java高并发,DDD,微服务等技术实践,专注java,rust技术栈。 本人姓名郭莹城,坐标深圳,前IBM架构师、咨询师、敏捷开发技术教练,前IBM区块链研究小组成员、十多年架构设计工作经验,《区块链核心技术与应用》作者之一, 现聚焦于:区块链创投与交易所资源对接和技术咨询。 工作微信&QQ:360369487,区块链创投与交易所资源对接,加我注明:博客园+对接,技术咨询和顾问,加我注明:博客园+顾问。想学习golang和rust的同学,也可以加我微信,备注:博客园+golang或博客园+rust,谢谢!
  • 相关阅读:
    深入理解TCP协议及其源代码
    Socket与系统调用深度分析
    构建调试Linux内核网络代码的环境MenuOS系统
    创新产品的需求分析:未来的图书会是什么样子?
    socket通信的原理与实践
    案例分析:设计模式与代码的结构特性
    网络相关的命令工具研究报告:ssh
    业务领域建模Domain Modeling
    ubuntu 设置静态ip,但显示scope global secondary ens33
    解决Python查询Mysql中文乱码问题
  • 原文地址:https://www.cnblogs.com/gyc567/p/11875271.html
Copyright © 2020-2023  润新知