首页 > 其他分享 >8小时速成golang(四)语法新奇

8小时速成golang(四)语法新奇

时间:2024-02-11 21:56:46浏览次数:24  
标签:函数 fmt 速成 golang go 新奇 var main 变量

 

 

1、从一个main函数初见golang语法

  package main


  import "fmt"


  func main() {
          /* 简单的程序 万能的hello world */
          fmt.Println("Hello Go")
  }

终端运行

$ go run test1_hello.go 
Hello Go
$

go run 表示 直接编译go语言并执行应用程序,一步完成

 

你也可以先编译,然后再执行

 $go build test1_hello.go 
 $./test1_hello
 Hello Go
  • 第一行代码package main定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
  • 下一行import "fmt"告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。
  • 下一行func main()是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有 init() 函数则会先执行该函数)。

 

注意:这里面go语言的语法,定义函数的时候,‘{’ 必须和函数名在同一行,不能另起一行。

 

  • 下一行 /.../ 是注释,在程序执行时将被忽略。单行注释是最常见的注释形式,你可以在任何地方使用以 // 开头的单行注释。多行注释也叫块注释,均已以 / 开头,并以 / 结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
  • 下一行fmt.Println(...)可以将字符串输出到控制台,并在最后自动增加换行字符 \n。 使用 fmt.Print("hello, world\n") 可以得到相同的结果。 Print 和 Println 这两个函数也支持使用变量,如:fmt.Println(arr)。如果没有特别指定,它们会以默认的打印格式将变量 arr 输出到控制台。

 

2、变量的声明

声明变量的一般形式是使用 var 关键字

变量声明

第一种,指定变量类型,声明后若不赋值,使用默认值0

var v_name v_type
v_name = value
package main
import "fmt"
func main() {
        var a int
        fmt.Printf(" = %d\n", a)
}
$go run test.go
a = 0

 第二种,根据值自行判定变量类型。

var v_name = value

第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。

v_name := value
// 例如
var a int = 10
var b = 10
c : = 10

 

e.package main



import "fmt"


func main() {
        //第一种 使用默认值
        var a int
        fmt.Printf("a = %d\n", a)
       //第二种 省略后面的数据类型,自动匹配类型
        var c = 20
        fmt.Printf("c = %d\n", c)
       //第三种 省略var关键字
        d := 3.14
        fmt.Printf("d = %f\n", d)
       //第四种 既有数据类型 又有数值
        var b int = 10
        fmt.Printf("b = %d\n", b)
}

 

多变量声明

package main
import "fmt"

var x, y int
var ( //这种分解的写法,一般用于声明全局变量
        a int
        b bool
)


var c, d int = 1, 2
var e, f = 123, "liudanbing"


//这种不带声明格式的只能在函数体内声明
//g, h := 123, "需要在func函数体内实现"


func main() {
        g, h := 123, "需要在func函数体内实现"
        fmt.Println(x, y, a, b, c, d, e, f, g, h)


        //不能对g变量再次做初始化声明
        //g := 400


        _, value := 7, 5  //实际上7的赋值被废弃,变量 _  不具备读特性
        //fmt.Println(_) //_变量的是读不出来的
        fmt.Println(value) //5
}

 

标签:函数,fmt,速成,golang,go,新奇,var,main,变量
From: https://www.cnblogs.com/chenxiaomeng/p/18013553

相关文章

  • 8小时速成golang(三)Golang语言特性
    golang的优势一、极其简单的部署方式1、可直接编译成机器码2、不需要依赖其他库3、直接运行即可部署 二、静态语言类型可在编译的时候检查出大多隐藏问题 三、语言层面的并发1、天生的基因支持2、充分利用多核packagemainimport("fmt""time")fu......
  • 8小时速成Golang(二)Golang开发环境 环境配置
     Go官网下载地址:https://golang.org/dl/Go官方镜像站(推荐):https://golang.google.cn/dl/Go官网:https://golang.org/ golang在Windows安装和配置可看链接:https://blog.csdn.net/weixin_54626591/article/details/134485077按照步骤一步一步next再配置环境变量即可 golan......
  • golang基础知识
    init函数是什么时候执行的init函数的作用是程序执行前包的初始化init函数执行顺序同一go文件中可以写多个init函数,按照代码顺序依次执行同一个package中,按照文件名(ASCII码顺序)顺序执行不同包且不互相依赖,按照import的顺序执行不同package中且互相依赖的,最后被依赖的最......
  • Golang包管理
    go包管理历史gopathgo1.5版本之前GOPATHsrc存放源代码pkg存放编译后的文件bin存放编译后的可执行文件通过统一包存放的路径来进行管理不支持依赖包的版本控制gopath模式下工程代码必须放在GOPATH/src下goget将远程代码克隆到GOPATH/src目录下goi......
  • Golang内部包的使用
    函数和变量的可见性小写字母开头只能在内部访问internal文件夹internal父级,同级目录下的包可以访问internal目录内部的包作用例子将管理后台的包和用户的包分开,将工程放在internal里面,公用包放在外面私有包的导入本地包导入使用replace进行替换原来包的地址=>替换后的......
  • 8小时速成golang--Golang环境安装
    安装Golang的步骤如下:下载Golang安装包。访问Golang官方网站[golang.org](https://golang.org/),根据您的操作系统类型和位数选择合适的安装包。Windows系统通常下载.msi格式的安装包,而Linux系统则下载.tar.gz或.zip格式的安装包。安装Golang。对于Windows系统,双击......
  • golang容器部署时区报错
    问题:consttimezone="Asia/Shanghai"funcTimeFormat(datetime.Time,patternstring)string{location,err:=time.LoadLocation(timezone)date.In(location)returndate.Format(pattern)} 1.在本地开发使用了时区是没有问题的,但是部署到服务器上面......
  • golang之枚举类型iota
    枚举类型是一种常用的数据类型,用于表示一组有限的、预定义的、具名的常量值。在枚举类型中,每个常量都是一个枚举值,它们之间的值相等且唯一。枚举类型通常用于表示一组相关的常量,比如星期、月份、性别等等。在其他语言里(比如Java和C),都内置了枚举类型,而在Go语言里是没有内置......
  • golang类型转换模块之gconv
    gf框架提供了非常强大的类型转换包gconv,可以实现将任何数据类型转换为指定的数据类型,对常用基本数据类型之间的无缝转换,同时也支持任意类型到struct对象的属性赋值。由于gconv模块内部大量使用了断言而非反射(仅struct转换使用到了反射),因此执行的效率非常高。使用方式:import"g......
  • 详解golang实现一个带时效的环形队列
    1.需求mysql执行时间超过100ms以上打warn日志,但是一分钟以内这种warn日志超过10条就需要告警。所以需求就是获得一分钟以内mysql的warn的个数。2.分析为什么使用环形队列而不使用slice?因为队列长度固定,所以可以一开始就分配好空间,不用自动扩容,环形的目的就是不用改变数组的值,只用移......